我无法弄清楚如何查询字符串中包含的列的表。
表公司:
id | title
----------
1 | abc
2 | abcd
3 | bcde
4 | xyfa
我试过了:
SELECT * FROM companies WHERE CONTAINS("ABCDEFG Ltd", title)
SELECT * FROM companies WHERE CONCAT("%", title, "%") LIKE "ABCDEFG Ltd"
我想回复:
id | title
----------
1 | abc
2 | abcd
3 | bcde
答案 0 :(得分:1)
我认为你正在寻找这个:
SELECT *
FROM companies
WHERE 'ABCDEFG Ltd' LIKE CONCAT('%', title, '%');
也就是说,模式是title
中任何一方都带有通配符的模式。您想知道您的公司名称是否与之匹配。
答案 1 :(得分:1)
戈登答案的另一种选择是INSTR功能
WHERE INSTR(title, 'ABCDEFG Ltd') <> 0
通常情况下,如果可能的话,我建议不要在WHERE
条件下进行函数调用,但是在LIKE
和/或CONCAT
的右侧放置一个字段同样糟糕;但在这种情况下,一个或另一个是不可避免的。我无法确定哪个版本会更快,你应该尝试两个版本。我会猜测我的可能是,因为like-concat可能涉及字符串副本然后比较;而INSTR 应该只需要比较;但是使用MySQL并不总是很明显。