MySQL喜欢多个值

web*_*ers 131 mysql sql sql-like

我有这个MySQL查询.

我有这个内容的数据库字段

sports,shopping,pool,pc,games 
shopping,pool,pc,games 
sports,pub,swimming, pool, pc, games   
Run Code Online (Sandbox Code Playgroud)

为什么这样的查询不起作用?我需要运动或酒吧或两者的田地?

SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Run Code Online (Sandbox Code Playgroud)

jaz*_*kat 289

更快的方式:

WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
Run Code Online (Sandbox Code Playgroud)

这是:

WHERE interests REGEXP 'sports|pub'
Run Code Online (Sandbox Code Playgroud)

在这里找到这个解决方案:http://forums.mysql.com/read.php?10,392332,392950#msg-392950

有关REGEXP的更多信息,请访问:http://www.tutorialspoint.com/mysql/mysql-regexps.htm

  • +1,虽然在运行时不是更快,但在击键时更快. (35认同)
  • 此解决方案将第一个从水中吹出 (3认同)
  • 从列中获取regexp值:`(从..中选择group_concat(myColumn separator'|')) (2认同)

And*_*mar 121

(a,b,c)列表仅适用于in.因为like,你必须使用or:

WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
Run Code Online (Sandbox Code Playgroud)

  • 这在多个(比如说5个或更多动态可搜索查询)中是不利的,因此,使用regexp会更好. (3认同)

Ahm*_*ain 34

你为什么不试试REGEXP.试试这样:

SELECT * FROM table WHERE interests REGEXP 'sports|pub'
Run Code Online (Sandbox Code Playgroud)

  • 是啊!我想以相反的方式.所以它是`SELECT*FROM table WHERE interest NOT REGEXP'deports | pub'`(>‿◠)✌ (5认同)
  • 这个答案与您 5 年前提交的“jazkat”答案有何不同? (4认同)

iam*_*h15 10

你也可以使用RLIKE.

例如:

SELECT * FROM TABLE_NAME WHERE COLNAME RLIKE 'REGEX1|REGEX2|REGEX3'
Run Code Online (Sandbox Code Playgroud)

  • 请大家注意,RLIKE 和 REGEXP 是同义词 (10认同)

Ale*_*noy 8

你的查询应该是 SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0

我的理解是你将兴趣存储在桌子的一个区域,这是一种误解.你应该肯定有一个"兴趣"表.

  • 我认为它应该是`SELECT*FROM table WHERE find_in_set(interests,'sports,pub')`,但这种技术在大多数情况下可能胜过正则表达式. (2认同)

vad*_*dim 6

或者,如果您只需要匹配单词的开头:

WHERE interests LIKE 'sports%' OR interests LIKE 'pub%'
Run Code Online (Sandbox Code Playgroud)

您可以使用正则表达式插入符匹配:

WHERE interests REGEXP '^sports|^pub'
Run Code Online (Sandbox Code Playgroud)

https://www.regular-expressions.info/anchors.html


小智 5

如果在AND参数后使用此函数,请不要忘记使用括号

像这样:

WHERE id=123 and(interests LIKE '%sports%' OR interests LIKE '%pub%')
Run Code Online (Sandbox Code Playgroud)