mysql查询是否包含汉字 的问题

mysql匹配汉字
SELECT "中文" regexp "[\u0391-\uFFE5]"; [\u0391-\uFFE5] 是匹配中文的正则,可是执行这个,返回的是0,这是为什么??

网上查询 mysql查询包含汉字的sql,会搜到两种:
一种是 SELECT column FROM table WHERE length(column)!=char_length(column)
这种不行,如果存在一些特殊字符,无法满足
另一种就是 通过正则,但是我试了下,如开始说的,也有问题

阅读 4.9k
3 个回答

首先要说就算是常规的正则表达式。。。\u0391-\uFFE5也是个很糟糕的做法。。。CJK扩展区已经从2E80扩展到3134F了,这东西你要精确判断是个CJK区的汉字那你写不完的。。。

而且0391什么鬼,不是判断双字节的吗?那和length!=char_length基本一样而且还过时啊。。。

其次参考MySQL官方文档:
The REGEXP and RLIKE operators work in byte-wise fashion, so they are not multibyte safe and may produce unexpected results with multibyte character sets
理当是不支持这么写。。。

之前用过一种方法,就干脆匹配除开字母数字等字符,regexp '[^[:alnum:][:punct:][:space:][:graph:]]',当然如果来个希腊字母、西里尔字母啥的就失效了。
希望能帮助到你。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题