oracle 利用 LENGTH和LENGTHB函数区分中英文(2009-02-07 10:49:29)

标签:

it

分类: oracle
前一段时间,我一朋友问我怎么得出这个字符串是中文还是英文,恰巧在别人的博客看到这两个函数:length() 和 lengthb()
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
记录一下!

04-14 01:25