我有一个MySQL选择语句的困境,这让我有点偏离了方向。在某个栏目中,我有一个类别术语。这个术语可能看起来像'category',或者它可能包含多个CSV,如下所示:'类别,银行专用'。
我需要检索所有包含逗号分隔值中的术语“bank special”的行。现在,我正在使用以下SQL语句:
SELECT * FROM tblnecklaces WHERE nsubcat REGEXP 'bank special';
现在这个工作正常,但如果我有如下类别:* *'diamond special'**例如,那么该行仍然被检索,因为我的列中的术语'special'似乎与我的REGEXP语句中的术语'bank special'匹配。
我如何检查整个短语“bank special”的存在,而不是部分匹配单词?
非常感谢您的时间和帮助。
3条答案
按热度按时间rmbxnbpk1#
最简单的解决方案是使用
LIKE
子句(%
是通配符):请注意,
LIKE
也比REGEXP
快得多。vbkedwbf2#
您可以在该列前面加上逗号,并将其与银行特殊信息进行比较:
我在替换中删除逗号后面的可选空格,因为您的示例中有一个。
ep6jt1vc3#
未测试,但此RegExp应该可以工作(
LIKE
也可以工作,但将匹配以相同短语开头或结尾的项目):