簡體   English   中英

MySQL使用REGEXP在逗號分隔的值中匹配術語的存在

[英]MySQL match existence of a term amongst comma seperated values using REGEXP

我有一個MySQL選擇語句難題,這使我有點偏離路線。 在某個列中,我有一個類別詞。 該術語可能看起來像“ 類別 ”,也可能包含多個CSV,例如:“ 類別,銀行專用 ”。

我需要在逗號分隔的值中檢索所有包含“特殊銀行”一詞的行。 當前,我正在使用以下SQL語句:

SELECT * FROM tblnecklaces WHERE nsubcat REGEXP 'bank special';

現在這可以正常工作,但是如果我具有以下類別:例如“ diamond special”,則仍會檢索該行,因為我的列中的“ special ”一詞似乎與我的REGEXP中的術語“ bank special ”匹配聲明。

我將如何僅檢查整個詞組“ bank special ”的存在,而不是部分匹配這些詞?

非常感謝您的時間和幫助

最簡單的解決方案是使用LIKE子句( %為通配符):

SELECT * FROM tblnecklaces WHERE nsubcat LIKE '%bank special%';

請注意, LIKE也比REGEXP快很多。

您可以在該列前面加上逗號,並將其與bank special進行比較:

SELECT  * 
FROM    tblnecklaces
WHERE   ',' + replace(nsubcat,', ','') + ',' LIKE ',bank special,'

我放入一個replace來刪除逗號后的可選空格,因為您的示例中有一個。

未經測試,但是此RegExp應該可以工作( LIKE也可以工作,但將匹配以相同詞組開頭或結尾的項目):

SELECT * FROM tblnecklaces WHERE nsubcat REGEXP '(^|, )bank special($|,)';

暫無
暫無

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

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