本文介绍了如何在MySQL中检测汉字?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要计算列列表中的中文数量。例如,如果出现"北京实业",这在中文中是四个字符,但我只数了一次,因为它出现在列中。

是否有特定的代码来解决此问题?

推荐答案

SELECT COUNT(*)
    FROM tbl
    WHERE HEX(col) REGEXP '^(..)*(E[2-9F]|F0A)'

将统计col列中包含汉字的记录数。

问题:

  • 我不确定哪些祸不单行范围代表中文。
  • 测试可以包括韩语和日语。("中日韩")
  • MySQL中4字节汉字需要utf8mb4,而不是utf8

细化

我假设表中的列是CHARACTER SET utf8。在utf8编码中,中文字符以祸不单行E2和E9之间的一个字节开始,或EF,或F0。以祸不单行E开头的长度为3个字节,但我没有检查长度;F0的长度为4个字节。

regexp以^(..)*开头,意思是"从字符串的开头(^)开始,找到0个或更多(*)2个字符(..)的值。后面应该是F0A。在这之后,任何事情都可能发生。更具体地说,E-Something是E后跟2,3,4,5,6,7,8,9中的任何一个

随机挑选,看到编码为3个祸不单行字节E88D89𠜎编码为4个祸不单行字节F0A09C8E

我不知道检查特定语言的字符串的更好方法。

如您所见,REGEXP可能相当慢。

此正则表达式可能会过度杀伤力,因为可能会捕获某些非中文字符。

这篇关于如何在MySQL中检测汉字?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-18 19:07