mysql 获取中文字符串长度

本文介绍了一种在MySQL中正确处理中文字符串截取的方法。通过使用char_length而非length函数,可以确保从左侧截取字符串时不会出现乱码,并提供了一个实际案例来说明如何避免在进行去重统计时因截取不当导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RT

BZ在写一个区域的去重统计的sql的时候,遇到的中文字符串截取长度不对的问题。


这是原始的数据,因为在做某项操作的时候会把region_name去掉最后面一个中文,然后取一个出来拿code做替换。

问题来了,因为有多个区域,在region_name去掉最后面一个中文之后,是一样的,导致整个取出来的区域错误,所以这里需要做个统计,然后去掉不需要的区域。

最开始想到的是mysql的substring,但是用法不符合我的需求,我需要从左边开始,然后截取到字符串长度-1这儿。然后试了一把left,但是用left(region_name,length(region_name)-1)的时候,减的不对,-2也不对,-4更不对,-8就减多了。后面也百度了一下,用的chahr_length,解决。

原文链接:http://www.jb51.net/article/42771.htm


解释是:

length:返回字符串所占的字节数,是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符
char_length:返回字符串所占的字符数,不管汉字还是数字或者是字母都算是一个字符


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值