嗨, 大家好: 网站在新年后正式开通,欢迎大家加入我们,共同维护一个良好氛围的中国技术社区。 欢迎举报不良帖子,欢迎提供建议。
我们的QQ群:136102234,欢迎进群找答案,里边会有很多资深的大师们。 point overflow

这是有趣的问题,之前曾经花了很多时间来研究这个问题。

正好有人在segmentfault上提问,搬过来做分享和笔记。

原文: UPDATE shop SET desn2 = "" WHERE desn2 REGEXP "[(联通)(移动)(电信)]";
我用这句的时候,发现中文都被清空了,而一些只有数字或者英语组成的单元格却没有被清空,请问怎么办?

我试了试,只要使用了中括号,就会莫名其妙被匹配:
我觉得应该是他把中文,分解成了 编码 ,然后用编码去匹配的
你自己写个试试.

SELECT '大家好' REGEXP '[不存在]'; 这个应该不存在,但是她就是存在了!

提问了 2016-05-16 10:52:41

jkant's gravatar image

jkant ♦♦
11130137138
采纳率: 3%


这只是我的理解。至于正确与否不做保证。 这是mysql正则的"[]"说明:

[ ] 匹配任何单一字符。

[123]定义一组字符,意思是匹配1或2或3.

那么,我理解的字符保存方式是ascii码保存的,这也好理解为什么会有字符集的概念。

SELECT ASCII('大家好'),ASCII('不存在') ==> 数据结果是:229 228

那这就好理解为什么:select 229 REGEXP '[228]'==>1

永久链接

已回答 2016-05-16 10:52:50

jkant's gravatar image

jkant ♦♦
11130137138
采纳率: 3%

你的回答
切换预览

关注这个问题

邮件:

登录之后,你可以在这里订阅任何更新。

RSS:

回答

回答和评论

Markdown基本语法

  • *italic* or _italic_
  • **bold** or __bold__
  • 链接:[文本](http://url.com/ "标题")
  • 图片?![alt 文本](/path/img.jpg "标题")
  • 编号列表: 1. Foo 2. Bar
  • 如果想要换行,只需要在前一行结尾处插入2个空格即可。
  • 支持基本HTML标记

问题标签:

×72
×1
×1

已提出的问题: 2016-05-16 10:52:41

问题浏览量: 914 次

最后更新: 2016-05-16 10:52:50