![](/img/trans.png)
[英]Match Numeric value after comma separated, concatenated by underscore values using MYSQL/MariaDB & REGEXP_SUBSTR
[英]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.