gpt4 book ai didi

mysql - 在带有正则表达式模式的逗号分隔字符串中使用 mysql 中的正则表达式搜索?

转载 作者:行者123 更新时间:2023-11-29 10:32:15 25 4
gpt4 key购买 nike

我想查明 11624 是否与 Shipping_zipcodes 列中的任何邮政编码/邮政编码系列匹配:

SELECT * FROM providers WHERE '11624' RLIKE shipping_zipcodes

我的查询适用于shipping_zipcodes中的11624和116[0-9]{2},但不适用于shipping_zipcodes中的11624,11625或116[0-9]{2},11625。

enter image description here

最佳答案

mysql> SELECT '11624' REGEXP "^(116[0-9]{2}|11625)$";
+----------------------------------------+
| '11624' REGEXP "^(116[0-9]{2}|11625)$" |
+----------------------------------------+
| 1 |
+----------------------------------------+
1 row in set (0.00 sec)

请注意,我必须更改您在 shipping_zipcodes 中保存的语法 - 最重要的是:| 而不是 ,

如果您可以假设所有输入值(例如 11624)正好是 5 位数字,那么您也许可以不使用锚定或括号。如果没有,可以使用 CONCAT() 将它们附加到您当前拥有的内容上。

您也许可以使用 REPLACE(), 转换为 |:

mysql> SELECT '11624' REGEXP REPLACE("116[0-9]{2},11625", ',', '|');
+-------------------------------------------------------+
| '11624' REGEXP REPLACE("116[0-9]{2},11625", ',', '|') |
+-------------------------------------------------------+
| 1 |
+-------------------------------------------------------+

但是...如果您的列表很长,查询会很慢。其中任何一个都需要全表扫描。如果速度太慢,您需要构建一个将各个邮政编码映射到提供商的表 - 并为其建立索引。

关于mysql - 在带有正则表达式模式的逗号分隔字符串中使用 mysql 中的正则表达式搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47183068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com