gpt4 book ai didi

mysql - 为什么这个 MySql 正则表达式不起作用?

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

SELECT 'AaYYY1231' REGEXP '[A-Z,0-9]+';

结果:

1

当我期望它返回 0 时,为什么它返回 1?它从哪里找到“a”的匹配项?

最佳答案

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

“REGEXP 不区分大小写,除非与二进制字符串一起使用。”

文档中的示例:

mysql> SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A';
+----------------+-----------------------+
| 'a' REGEXP 'A' | 'a' REGEXP BINARY 'A' |
+----------------+-----------------------+
| 1 | 0 |
+----------------+-----------------------+

此外,它不是贪心的,所以它不能确保整个字符串匹配。修改上面的例子会产生:

mysql> SELECT 'a' REGEXP BINARY '[A-Z0-9]+', 'Aa' REGEXP BINARY '[A-Z0-9]+';
+-------------------------------+--------------------------------+
| 'a' REGEXP BINARY '[A-Z0-9]+' | 'Aa' REGEXP BINARY '[A-Z0-9]+' |
+-------------------------------+--------------------------------+
| 0 | 1 |
+-------------------------------+--------------------------------+

为了解决这个问题,您可以为行的开头和结尾添加标志:

mysql> SELECT 'Aa' REGEXP BINARY '^[A-Z0-9]+$';
+----------------------------------+
| 'Aa' REGEXP BINARY '^[A-Z0-9]+$' |
+----------------------------------+
| 0 |
+----------------------------------+

这将导致您想要的最终答案:

mysql> SELECT 'AaYYY1231' REGEXP BINARY '^[A-Z,0-9]+$';
+------------------------------------------+
| 'AaYYY1231' REGEXP BINARY '^[A-Z,0-9]+$' |
+------------------------------------------+
| 0 |
+------------------------------------------+

关于mysql - 为什么这个 MySql 正则表达式不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14370723/

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