本文介绍了如何在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中检测汉字?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!