oracle判断字段中包含全角字符

如题,我们可以用2个函数 length() 和  lengthb()
length()表示字符个数。
lengthb()表示字节数。
在varchar2()中,“abc”算3个字符,“艾尔法”也算三个字符。
“abc”有三个字节,但是”艾尔法“就不一定了。
例子如下:
select a.* ,length(a),lengthb(a) from test1 a;
 
如上所示,字符数不等于字节数!
在上面的数据库中,一个英文字符为1个字节,一个中文为3个字节。

如上所示,字符数不等于字节数!
在上面的数据库中,一个英文字符为1个字节,一个中文为3个字节。在客户取的值中,是有不少中文的,这就是超出最大值的原因了。

 只要用条件筛选这2个不相等的,就说明字段包含全角字符了,即

select * from t_pm_user u where lengthb(fdescription_l1) <> length(fdescription_l1)

 

 

 

posted @ 2023-10-27 20:04  凉了记忆  阅读(218)  评论(0编辑  收藏  举报