The LENGTH functionsreturn the length of char. LENGTH calculates length usingcharacters as defined by the input character set.數據庫
--返回以字符爲單位的長度.spa
LENGTHB usesbytes instead of characters.code
--返回以字節爲單位的長度.orm
LENGTHC usesUnicode complete characters.字符串
--返回以Unicode徹底字符爲單位的長度.input
LENGTH2 usesUCS2 code points.string
--返回以UCS2代碼點爲單位的長度.it
LENGTH4 usesUCS4 code points.io
--返回以UCS4代碼點爲單位的長度.function
lengthb(string)計算string所佔的字節長度:返回字符串的長度,單位是字節
length(string)計算string所佔的字符長度:返回字符串的長度,單位是字符
對於單字節字符,LENGTHB和LENGTH是同樣的.
如能夠用length(‘string’)=lengthb(‘string’)判斷字符串是否含有中文。
一個漢字在Oracle數據庫裏佔多少字節跟數據庫的字符集有關,UTF8時,長度爲三。
select lengthb(''飄'') from dual 可查詢漢字在Oracle數據庫裏佔多少字節
SELECT LENGTH('CANDIDE') "Length in characters"
FROM DUAL;
Length in characters
--------------------
7
The next example assumes a double-byte database character set.
SELECT LENGTHB ('CANDIDE') "Length in bytes"
FROM DUAL;
Length in bytes
---------------
14
SQL> select length('北京') from dual;
LENGTH('北京')
--------------
2
SQL> select lengthb('北京') from dual;
LENGTHB('北京')
---------------
6
SQL> select lengthb('BeiJing') from dual;
LENGTHB('BEIJING')
------------------
7
SQL> select length('BeiJing') from dual;
LENGTH('BEIJING')
-----------------
7
值得一提的是:
在不一樣的數據庫,由於字符集的不一樣,LENGTHB獲得的值可能會不同。如ZHS16GBK採用兩個byte位來定義一個漢字。而在UTF8,採用3個byte。
--查看字符集語句
SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
PARAMETER VALUE