我有这个MySQL查询。我有包含此内容的数据库字段
sports,shopping,pool,pc,games shopping,pool,pc,games sports,pub,swimming, pool, pc, games
为什么这个类似的查询不起作用?我需要体育或酒吧或两者兼而有之的字段?
SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
q3aa05251#
更快的方法:
WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
就是:
WHERE interests REGEXP 'sports|pub'
在此找到此解决方案:http://forums.mysql.com/read.php?10,392332,392950#msg-392950有关REGEXP的更多信息,请访问:http://www.tutorialspoint.com/mysql/mysql-regexps.htm
wd2eg0qa2#
(a,b,c)列表只适用于in。对于like,您必须使用or:
(a,b,c)
in
like
or
mitkmikd3#
你为什么不试试REGEXP呢。试试这样:
SELECT * FROM table WHERE interests REGEXP 'sports|pub'
ugmeyewa4#
您也可以使用REGEXP的同义词RLIKE。例如:
REGEXP
RLIKE
SELECT * FROM TABLE_NAME WHERE COLNAME RLIKE 'REGEX1|REGEX2|REGEX3'
fdx2calv5#
如果在AND参数之后使用此函数,请不要忘记使用括号就像这样:
AND
WHERE id=123 and(interests LIKE '%sports%' OR interests LIKE '%pub%')
dgenwo3n6#
或者,如果只需要匹配单词的开头:
WHERE interests LIKE 'sports%' OR interests LIKE 'pub%'
可以使用regexp插入符号匹配:
WHERE interests REGEXP '^sports|^pub'
https://www.regular-expressions.info/anchors.html
p8h8hvxi7#
您的查询应为SELECT * FROMtableWHERE find_in_set(interests, "sports,pub")>0我所理解的是,您将利息存储在表的一个字段中,这是一个误解。您确实应该有一个“利息”表。
SELECT * FROM
WHERE find_in_set(interests, "sports,pub")>0
7bsow1i68#
就像@Alexis Dufrenoy提出的那样,查询可以是:
SELECT * FROM `table` WHERE find_in_set('sports', interests)>0 OR find_in_set('pub', interests)>0
手册中的详细信息。
2j4z5cfb9#
更多工作示例:
SELECT COUNT(email) as count FROM table1 t1 JOIN ( SELECT company_domains as emailext FROM table2 WHERE company = 'DELL' ) t2 ON t1.email LIKE CONCAT('%', emailext) WHERE t1.event='PC Global Conference';
任务是在电子邮件扩展名等于多个公司域的情况下使用筛选器计算事件的参与者。
9条答案
按热度按时间q3aa05251#
更快的方法:
就是:
在此找到此解决方案:http://forums.mysql.com/read.php?10,392332,392950#msg-392950
有关REGEXP的更多信息,请访问:http://www.tutorialspoint.com/mysql/mysql-regexps.htm
wd2eg0qa2#
(a,b,c)
列表只适用于in
。对于like
,您必须使用or
:mitkmikd3#
你为什么不试试REGEXP呢。试试这样:
ugmeyewa4#
您也可以使用
REGEXP
的同义词RLIKE
。例如:
fdx2calv5#
如果在
AND
参数之后使用此函数,请不要忘记使用括号就像这样:
dgenwo3n6#
或者,如果只需要匹配单词的开头:
可以使用regexp插入符号匹配:
https://www.regular-expressions.info/anchors.html
p8h8hvxi7#
您的查询应为
SELECT * FROM
tableWHERE find_in_set(interests, "sports,pub")>0
我所理解的是,您将利息存储在表的一个字段中,这是一个误解。您确实应该有一个“利息”表。
7bsow1i68#
就像@Alexis Dufrenoy提出的那样,查询可以是:
手册中的详细信息。
2j4z5cfb9#
更多工作示例:
任务是在电子邮件扩展名等于多个公司域的情况下使用筛选器计算事件的参与者。