Oracle SQL 関数 : LENGTH : 文字列の長さ取得
numberRet := LENGTH( dateSrc ); dateSrc の文字列の長さをを返します。 文字列の中の全角文字はそれ自身を1文字として数えます。 charのデータ型がCHARの場合、長さには後続する空白がすべて含まれます。charがNULLの場合は、NULLが返されます。
SQL> SELECT 'the capital,TOKYO' ORGINAL, LENGTH('the capital,TOKYO') LENGTH
2 FROM DUAL
3 UNION
4 SELECT 'the capital、TOKYO', LENGTH('the capital、TOKYO')
5 FROM DUAL
6 UNION
7 SELECT 'あいうえお abcde 0123abcde ABCDE', LENGTH('あいうえお abcde 0123abcde ABCDE')
8 FROM DUAL;
ORGINAL LENGTH
---------------------------------------- ----------
the capital,TOKYO 17
the capital、TOKYO 17
あいうえお abcde 0123abcde ABCDE 27
SQL>
上のSQLで LENGTH 関数は半角文字、全角文字に関係なく文字の個数として数えることが分かります。
この LENGTH に似た関数として LENGTHB が有ります。この関数は内部で持っているコードのバイト数を返します。
内部のコード体系が Shift-jis , Unicode などで各文字ごとにバイト数が変わりますので、 この関数を使うことはあまりないかと思います。
取敢えず上のSQLを LENGTHB に変えたもので実行してみます。
(私のOracleはコードを Shift-jis に設定してあります。)
SQL> SELECT 'the capital,TOKYO' ORGINAL, LENGTHB('the capital,TOKYO') LENGTHB
2 FROM DUAL
3 UNION
4 SELECT 'the capital、TOKYO', LENGTHB('the capital、TOKYO')
5 FROM DUAL
6 UNION
7 SELECT 'あいうえお abcde 0123abcde ABCDE', LENGTHB('あいうえお abcde 0123abcde ABCDE')
8 FROM DUAL;
ORGINAL LENGTHB
---------------------------------------- ----------
the capital,TOKYO 17
the capital、TOKYO 34
あいうえお abcde 0123abcde ABCDE 33
SQL>