MySQL包含在字符串中的列

时间:2016-09-23 23:17:40

标签: mysql sql

我无法弄清楚如何查询字符串中包含的列的表。

表公司:

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

2 个答案:

答案 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并不总是很明显。