2011-12-03 16 views
-1

我不知道是否可以查詢一個逗號分隔字符串的特定部分,類似如下:查詢一個逗號的特定部分分割的字符串

$results = mysql_query("SELECT * FROM table1 WHERE $pid=table1.recordA[2] ",$con); 

$pid是一個數字

recordA包含像

34,9008,606,,416,2 

數據,其中i想要查詢的第三部分(606)

謝謝您提前

+0

$ pid是字段名稱爲什麼你改變默認值的地方 –

回答

0

在逗號分隔的列表或任何數據分離在mySQL字段之內是不屑一顧並且是所有範圍不好的做法。

與其查看mySQL字段中delimetered列表的元素,不如考慮將該字段分解到其自己的表中,然後創建一個鄰接列表以創建table1與其相關變量之間的1:多關係。

如果您致力於此路線,最簡單的方法是使用PHP來管理它,因爲mySQL只有很少的工具(超越正則表達式/文本搜索)深入到您要提取的數據。 $results = explode(',',$query);會根據返回的字段創建一個變量數組,允許您根據需要針對它運行儘可能多的條件檢查。

但是,考慮將此添加到「需要重新編寫/重新考慮」列表中。關係表結構將允許您直接查詢數據庫中的$pid的值,因爲它將包含在其自己的字段中並鏈接到

如果delimetered變量列表具有不確定的長度或者變量之間的關係是平等的你最好在stackoverflow上搜索mySQL中有向無環圖的信息,以找到更好的解決方案。

不知道這個腳本的性質或預期的目的,我不能更詳細地回答。我希望這有所幫助。

+0

我會做一個新表,它更容易處理數據。感謝您的幫助。 –

0

如何:

SELECT * FROM table1 WHERE FIND_IN_SET({$pid}, recordA) = 3 

確保指數recordA。我喜歡下一個傢伙的正常化,但有時分解它只是比它的價值更麻煩;)

+0

是的,它的工作原理。非常感謝你... –

相關問題