首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何忽略错误1139 (带有错误模式的REXEXP操作符)?

问如何忽略错误1139 (带有错误模式的REXEXP操作符)?
EN

Stack Overflow用户
提问于 2012-10-31 19:19:38
回答 2查看 657关注 0票数 0

请考虑下表:

代码语言:javascript
复制
mysql> select * from test;
+---------+
| col     |
+---------+
| ^test$  |
| tes$()t |
| X$%[    |
| test$   |
| ^test   |
| test    |
| [       |
+---------+
7 rows in set (0.04 sec)

它包含有效和无效的模式。

如果我这样做了:

代码语言:javascript
复制
mysql> select * from test where 'test' regexp col;
+--------+
| col    |
+--------+
| ^test$ |
| test$  |
| ^test  |
| test   |
+--------+
4 rows in set (0.04 sec)

我得到模式匹配为'test‘的所有行,而所有其他行(包括无效模式)都被忽略。

现在,如果我直接做一个无效的请求,我会得到一个模式语法错误:

代码语言:javascript
复制
mysql> select * from test where 'test' regexp '[';
ERROR 1139 (42000): Got error 'brackets ([ ]) not balanced' from regexp

有没有办法(没有另一个表)强制MySQL忽略这些错误(例如,会给出一个空的结果)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-31 19:27:24

好的,我找到了一个可行的解决方案,这很棘手,但这是可行的:

代码语言:javascript
复制
SELECT * FROM test WHERE 'test' REGEXP RIGHT(CONCAT(col, '['), LENGTH('['));

将'[‘替换为您的regexp模式。如果您允许您的客户使用regexp,可能会很有用。

票数 0
EN

Stack Overflow用户

发布于 2012-10-31 19:26:38

代码语言:javascript
复制
select * from test where 'test' like '[';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13156698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档