gpt4 book ai didi

mysql - 如何在 MySQL 正则表达式中否定方括号

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

我正在尝试使用 MySQL 正则表达式来匹配不包含方括号的变量名称。但是,当我写一些内容时包括:

[^[]]

MySQL不执行匹配,并在消息面板中返回OK,这意味着查询尚未执行。

问题:如何在MySQL中取反方括号?

编辑:

我使用 MySQL 服务器 8.0.16 和 MySQL Workbench 8.0

最佳答案

MySQL5.x 仅允许在字符类中使用 ],前提是它是类中的第一个字符(请参阅 manual )。因此,您需要将字符类重新设计为 [^][]。例如:

CREATE TABLE vars (varname VARCHAR(20));
INSERT INTO vars VALUES
('hello world'),
('hello [world'),
('hello world]'),
('hello [world]');
SELECT varname, varname RLIKE '^[^][]+$' AS `match`
FROM vars

输出:

varname         match
hello world 1
hello [world 0
hello world] 0
hello [world] 0

Demo on dbfiddle

MySQL 8+ 使用不同的正则表达式引擎(感谢 @WiktorStribiżew),因此在这种情况下需要将正则表达式修改为 [^]\\[] (不转义 [ ,MySQL 提示“未闭合的括号表达式”)。这种形式的正则表达式在 MySQL 5.7 中也可以正常工作。

Demo on dbfiddle

关于mysql - 如何在 MySQL 正则表达式中否定方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56105462/

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