SQL:在一列中搜索空格分隔的单词

时间:2014-09-22 04:12:24

标签: mysql sql

我的列中包含空格分隔的单词:

|         tags           |
--------------------------
| python javascript java | 

现在,我想选择具有特定字词的行。

select * from table where ['的java' in tags]

请注意,当我选择java时,不应选择仅包含javascript的行,这意味着它必须与字级匹配。

感谢

2 个答案:

答案 0 :(得分:2)

您可以使用FIND_IN_SET来获取正确的行。由于它使用逗号分隔符,因此您需要用逗号替换空格以获得正确的结果;

SELECT *
FROM table1
WHERE FIND_IN_SET('java', REPLACE(tags, ' ', ',')) > 0

An SQLfiddle to test with

也就是说,使用您正在显示的表格格式的查询将无法使用索引,并且在数据量增长时会非常慢。相反,使用每个标记行可以更好地 ,这样您就可以使用简单的等号匹配。这样就可以使用索引,你可以获得相当大的性能提升。

A quick sample of that

答案 1 :(得分:0)

我最初想过使用FIND_IN_SET,但简单的LIKE应该给出你期望的东西。

select * from tableA where tags LIKE '%java%'