Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/windows-phone-8/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql PHPMyAdmin使用两个或多个字符串匹配行_Sql_Database_Phpmyadmin_Row - Fatal编程技术网

Sql PHPMyAdmin使用两个或多个字符串匹配行

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

我有一个巨大的数据库,在这个数据库中,我想从“title”列中找到不包含“GmbH”、“GbR”、“e.K.”等字样的行

我试过这个:

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。第二个似乎也适用于我:。