我正在对邮政编码/邮政编码字段进行查询。
我做了一些研究,但不支持否定前瞻:
"MySQL supports POSIX regular expressions, not PCRE"
是否有替代解决方案,使用 MYSQL 支持的正则表达式?
(?i)^W(?!C)
-- 这是 PHP 中的解决方案
以及对数据库的示例查询
select postcode from `postcodes` WHERE LOWER(postcode) REGEXP '^W(?!C)'
最佳答案
在MySQL中,你可以使用
WHERE postcode REGEXP '^W([^C]|$)'
([^C]|$)
匹配除 C
或字符串结尾之外的任何字符。另外,无需使用 TOLOWER
,因为正则表达式搜索默认不区分大小写。
请参阅online tests :
SELECT 'wc' REGEXP '^W([^C]|$)'; // => 0
SELECT 'wR' REGEXP '^W([^C]|$)'; // => 1
SELECT 'w' REGEXP '^W([^C]|$)'; // => 1
关于php - MYSQL 正则表达式 负向先行替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44628738/