oracle 利用 LENGTH和LENGTHB函数区分中英文(2009-02-07 10:49:29)
前一段时间,我一朋友问我怎么得出这个字符串是中文还是英文,恰巧在别人的博客看到这两个函数:length() 和 lengthb()
SQL> select length('ABCDE中文字符串FG') from dual;
SQL> select length('ABCDE中文字符串FG') from dual;
LENGTH('ABCDE中文字符串FG')
---------------------------
12
在length()看来一个汉字就是一个长度。
SQL> select lengthb('ABCDE中文字符串FG') from dual;
LENGTHB('ABCDE中文字符串FG')
----------------------------
17
而在lengthb()看来一个汉字就是两个长度。
看下面的应用:
SQL> WITH STR AS (SELECT 'ABCDE中文字符串FG' S FROM DUAL)
2 SELECT
3 LENGTH(S) * 2 - LENGTHB(S) ENG_NUM,
4 LENGTHB(S) - LENGTH(S) CHN_NUM,
5 LENGTHB(S) * 2 - LENGTH(S) * 2 CHN_B
6 FROM STR;
ENG_NUM CHN_NUM CHN_B
---------- ---------- ----------
7 5 10
记录一下!