2014-02-13 59 views
1

我有一列的數據庫(MYDB)具有以下數據:獲取的字符串的某些部分出來的一個選擇

PK:

  • 8/10/6101 + 6102(2971386 )
  • 二千四百一十一分之六千一百十(3037457)
  • 8/10/6504(2276770)
  • 8/10/6403(2724296)
  • -266993 8
  • 8/1/1001年至1031年(2857109)
  • -2547251
  • 8/9/5003-5006(2770096)

我必須將這些數據與可變$id例如比較:2724296

SELECT * FROM mydb WHERE PK = '$id'; 

當然,這個查詢不會傳遞結果。有沒有簡單的方法來比較我的$ id大括號中的值和沒有大括號的值?替換替換例如只有大括號,但沒有留下大括號的值。

映入眼簾,Yab86

+0

你爲什麼在db中使用這樣的格式 –

+0

正則表達式可能會這樣做,但如果你想比較你也可以使用PHP'explode'來實現它。另外,這種格式是什麼?..? – briosheje

+0

除了錯誤的數據庫結構,爲什麼不使用LIKE? SELECT * FROM myTable WHERE column LIKE'%$ id%' –

回答

1

您可以使用REGEXP這一點。嘗試這個查詢,

$query = "SELECT * FROM mydb WHERE PK REGEXP '({$id})' OR PK REGEXP '-{$id}'"; 
+0

這很好 - 謝謝謝林。 – yab86

+0

很高興我能幫到.. –

0

我會嘗試一個正則表達式(假設你只想檢查括號內的數字)。像這樣的東西應該工作:

\([0-9]*\)$ 

這將返回開頭的字符串(後跟1個或多個數字和結尾)。然後,您應該能夠從字符串中的括號去掉,並將其與比較你的變量

1

您可以在下面使用:

SELECT * FROM MYDB WHERE PK LIKE '%(2724296)';

下面是有點複雜:使用正則表達式

SELECT * FROM mydb的WHERE PK REGEXP '[(] 2724296 [)]';

請參閱此https://dev.mysql.com/doc/refman/5.1/en/regexp.html來編寫可自定義的正則表達式。