我试过:
....WHERE fieldname REGEXP '.*\(.*\).*';
但这会返回表中的每条记录。
最佳答案
在 REGEXP 模式中转义正则表达式特殊元字符时,您应该使用双反斜杠。此外,由于 REGEXP 还会找到部分匹配项,因此您不需要在开始/结束处使用 .*
。
因此,您可以将表达式固定为
WHERE fieldname REGEXP '\\(.*\\)';
或者只使用 LIKE
,其中 %
匹配任意数量的任意字符(但与 REGEXP
不同,必须匹配整个条目):
WHERE fieldname LIKE '%(%)%';
A MySQL fiddle :
DROP TABLE IF EXISTS t;
CREATE TABLE t (word varchar(255));
INSERT INTO t (word)
VALUES
('test (here)'),
('test (here) test'),
('(here) test'),
('test no'),
('no test');
SELECT * FROM t WHERE word REGEXP '\\(.*\\)';
SELECT * FROM t WHERE word LIKE '%(%)%';
要获取像 text ) 和 ( here
这样的条目,您可以使用
SELECT * FROM t WHERE word REGEXP '\\(.*\\)|\\).*\\(';
SELECT * FROM t WHERE word LIKE '%(%)%' OR word LIKE '%)%(%';
参见 another fiddle .
关于mysql - REGEX 在 MySQL 中查找包含左括号和右括号的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43228398/