Sql PHPMyAdmin使用两个或多个字符串匹配行
我有一个巨大的数据库,在这个数据库中,我想从“title”列中找到不包含“GmbH”、“GbR”、“e.K.”等字样的行 我试过这个:Sql PHPMyAdmin使用两个或多个字符串匹配行,sql,database,phpmyadmin,row,Sql,Database,Phpmyadmin,Row,我有一个巨大的数据库,在这个数据库中,我想从“title”列中找到不包含“GmbH”、“GbR”、“e.K.”等字样的行 我试过这个: SELECT * FROM `listings` WHERE `listings`.`title` NOT LIKE '%GmbH' AND `listings`.`email_allow`=0 这是可行的,但这会显示所有其他包含这些单词的行,因此如何编写一个只显示不包含这些单词的行的查询 这些查询未成功: 1. SELECT * FROM `listi
SELECT * FROM `listings` WHERE `listings`.`title` NOT LIKE '%GmbH' AND `listings`.`email_allow`=0
这是可行的,但这会显示所有其他包含这些单词的行,因此如何编写一个只显示不包含这些单词的行的查询
这些查询未成功:
1. SELECT * FROM `listings` WHERE `listings`.`title` NOT LIKE '%GmbH' OR '%GbR' OR '%AG' AND `listings`.`email_allow`=0
2. SELECT * FROM `listings` WHERE `listings`.`title` NOT LIKE ('%GmbH' OR '%GbR' OR '%AG') AND `listings`.`email_allow`=0
3. SELECT * FROM `listings` WHERE (`listings`.`title` NOT LIKE '%GmbH' OR '%GbR' OR '%AG') AND `listings`.`email_allow`=0
您需要重复
而不是像:
SELECT l.*
FROM `listings` l
WHERE l.title NOT LIKE '%GmbH' AND
l.title NOT LIKE '%GbR' AND
l.title NOT LIKE '%AG' AND
l.email_allow = 0;
你可能想考虑一个全文索引,如果你有这样的查询。像
这样的代码可能非常昂贵
也可以使用正则表达式执行此操作:
SELECT l.*
FROM `listings` l
WHERE l.title NOT REGEXP '(GmbH|GbR|AG)$' AND
l.email_allow = 0;
正则表达式不一定更快,但更简洁。谢谢,第一个选项对我很有用。第二个没有给出任何结果。@BujarA。第二个似乎也适用于我:。