如何在SQL中检查列是否包含字符串的子串?

4
我希望检查我的数据库中的一列是否包含与我的示例字符串相似的单词。 相对于使用以下查询语句: select * from myTable where name like '%words%'; 所以如果我有一个记录,其中name=word,我可以检索它。但是,使用以上查询语句只能获取myTable中名字列中包含子字符串words的结果,因此我无法获取word
1个回答

4
你只需要在你的LIKE操作符中交换两个术语即可:
SELECT * 
FROM mytable
WHERE 'words' LIKE CONCAT('%',name,'%')

我相信LOCATE()INSTR()在这里也可以使用,这样看起来更好,因为不需要连接搜索词/子字符串。

SELECT *
FROM mytable
WHERE INSTR('words', name) > 0

非常感谢。这个 CONCAT('%',name,'%') 是如何工作的?你能给我一个链接吗? - Farnaz Daneshvar
1
这只是在每个“name”周围扔掉通配符并搜索它。它与您的示例完全相同,但我们不是说“Where this“ name” column is like this string”,而是说“Where this string is like this name column”。不确定是否有文档,因为这只是“LIKE”运算符在执行其操作。 - JNevill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接