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>