我的列中包含空格分隔的单词:
| tags |
--------------------------
| python javascript java |
现在,我想选择具有特定字词的行。
select * from table where [
'的java' in tags]
请注意,当我选择java
时,不应选择仅包含javascript
的行,这意味着它必须与字级匹配。
感谢
答案 0 :(得分:2)
您可以使用FIND_IN_SET
来获取正确的行。由于它使用逗号分隔符,因此您需要用逗号替换空格以获得正确的结果;
SELECT *
FROM table1
WHERE FIND_IN_SET('java', REPLACE(tags, ' ', ',')) > 0
也就是说,使用您正在显示的表格格式的查询将无法使用索引,并且在数据量增长时会非常慢。相反,使用每个标记行可以更好地 ,这样您就可以使用简单的等号匹配。这样就可以使用索引,你可以获得相当大的性能提升。
答案 1 :(得分:0)
我最初想过使用FIND_IN_SET,但简单的LIKE应该给出你期望的东西。
select * from tableA where tags LIKE '%java%'