筛选出mysql中某一个字段中是否包含中文字符

问题描述

mysql库中包含了中文字符(错误数据),导致程序异常

解决方法

使用sql语句排查出mysql表中某一字段的中文字符(异常值)

SELECT * FROM tablename WHERE length(column(字段名))!=char_length(column(字段名))

原理

length()和char_length()的区别

length() 该字符有多少个字节,即字节的长度;char_length()该字符有多少个字符,即字符个数

例:

select length("China");  ====>  5
select length("中国");  ====>  6
select char_length("China");  ====>  5
select char_length("中国");  ====>  2

因此如果字符为英文,length()和char_length()的结果相同,如果是中文字符,length()和char_length()结果不同

字符和字节区别

1)字符和字节并不是一个可比性的概念。

2)字符:在计算机和电信技术中,一个字符是一个单位的字形,类字形单位或符号,例如:一个字母,一个汉字,一个数字,一个单独的符号等都是一个字符
字节: 即byte,一个byte等于8bit位,每个bit位是0/1两种状态,即一个字节可以表示256个状态,计算机里用字节来作为最基本的存储单位。
3)
3.1 ASCII码中,一个英文字母(不区分大小写)占一个字节的空间,一个中文字符占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8为二进制数,换算为十进制。最小值为0,最大值为255.
3.2 UTF-8中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节
3.3 Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节
文本符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号 “.” 占一个字节的大小,中文句号“。”占两个字节的大小
3.4 UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)
3.5 UTF-32编码中,世界上任何字符的存储都需要4个字节

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值