繁体   English   中英

SQL SELECT不喜欢

[英]SQL SELECT WHERE NOT LIKE

我有一个数组:

$codes = array (97121, 97122, 97123, 97180);

真正的数组更长,它包含近130个代码,所以我认为它不必是一个循环。

我有一个mySQL表,其中有一个列VilleAnn (带有邮政编码的城市)ex:

  • Sainte-Anne 97180
  • Sanary-sur-Mer 83110

使用mysqli我必须选择VilleAnn不包含数组$codes任何邮政编码。

如果VilleAnn是一个简单的邮政编码我会说:

SELECT * FROM table WHERE VilleAnn NOT IN(97121, 97122, 97123, 97180)

但在这种情况下,它必须是使用NOT LIKE "%..."

有什么建议么?

你可以REGEXP:

SELECT * FROM table WHERE VilleAnn NOT REGEXP '97121|97122|97123|97180|....'

像这样的东西:

SELECT * 
FROM `table` 
WHERE (
    `VilleAnn` NOT LIKE '%97121%' AND 
    `VilleAnn` NOT LIKE '%97122%' AND 
    `VilleAnn` NOT LIKE '%97123%' AND 
    `VilleAnn` NOT LIKE '%97180%'
)

在条件不适用于通配符。 您最好的选择是尝试从原始字段中提取邮政编码,在此示例中

SELECT * FROM table WHERE right(VilleAnn,5) NOT IN ('97121', '97122', '97123', '97180')

我认为现实生活更复杂,所以可能需要调整以反映该领域的实际格式。

SELECT * FROM table WHERE VilleAnn NOT REGEXP '[0-9]';

这会对你有所帮助。

要检查四次出现,您可以使用:

SELECT * FROM table WHERE VilleAnn NOT REGEXP '[0-9]{4}';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM