Oracle SQL 関数 : LENGTH : 文字列の長さ取得

 numberRet := LENGTH( dateSrc );

 dateSrc の文字列の長さをを返します。
 文字列の中の全角文字はそれ自身を1文字として数えます。
 charのデータ型がCHARの場合、長さには後続する空白がすべて含まれます。charがNULLの場合は、NULLが返されます。 

SQL> SELECT 'the capital,TOKYO' ORGINAL, LENGTH('the capital,TOKYO') LENGTH
  FROM DUAL
  UNION
  SELECT 'the capital、TOKYO', LENGTH('the capital、TOKYO')
  FROM DUAL
  UNION
  SELECT 'あいうえお abcde 0123abcde ABCDE', LENGTH('あいうえお abcde 0123abcde ABCDE')
  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
  FROM DUAL
  UNION
  SELECT 'the capital、TOKYO', LENGTHB('the capital、TOKYO')
  FROM DUAL
  UNION
  SELECT 'あいうえお abcde 0123abcde ABCDE', LENGTHB('あいうえお abcde 0123abcde ABCDE')
  FROM DUAL;
 
ORGINAL                                     LENGTHB
---------------------------------------- ----------
the capital,TOKYO                                17
the capital、TOKYO               34
あいうえお abcde 0123abcde ABCDE                33
 
SQL>

share


本書用のWebアプリを使ってSQLを実行し学習していきます。初心者の方に分かりやすく、図表を多く使って解説されています。 学習の最後には200問越えのドリルが付いていてSQLのスキルが試せる様になっています。