簡體   English   中英

LIKE子句將從一個字符串中選擇“2”而不是“12”

[英]LIKE clause that will select '2' but not '12' from a string of characters

我有一個遺留數據庫,其中包含一個字段'User_Defined',其中包含一個字符串,描述每個記錄屬於哪些項目。 項目ID是該字符串中以逗號分隔的數字。 例如,記錄可能包括:

2
12
22
2,12
2,8,10,12
2,12,20,120,220

當前查詢的內容如下:

SELECT tbl_species.Species_ID, 
    tbl_species.Common_Name, 
    tbl_species.User_Defined
FROM tbl_species
WHERE User_Defined LIKE '%2';

在這種情況下,查詢當然會返回字符串中任何位置包含“2”的所有記錄。 我在這里選擇2,但它可以是通過PHP變量傳入的任何數字。

我的問題是我如何制作查詢,以便它只返回包含2而不是12,22,120等的記錄?

順便說一句,我意識到解決這個問題的正確方法是創建一個查找表來處理這種關系,但是如果我能在下次重新設計之前修補它,那就太棒了!

謝謝!

嘗試使用FIND_IN_SET

WHERE FIND_IN_SET('2', User_Defined)

將一個前導和尾隨逗號添加到要搜索的列,然后搜索由逗號括起的值。

...
WHERE CONCAT(',', User_Defined, ',') LIKE '%,2,%';

嘗試這個:

User_Defined LIKE '2,%' OR User_Defined='2' OR User_Defined LIKE '%,2' OR User_Defined LIK E '%,2,%'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM