文字列式の文字数を返す汎用 SQL 関数です。
Synopsis
CHAR_LENGTH(string-expression)
引数
string-expression 列の名前、文字列リテラル、他のスカラ関数の結果などを表すことができる文字列式。基本となるデータ型は、任意の文字タイプ (CHAR や VARCHAR など) とすることができます。
概要
CHAR_LENGTH は、与えられた文字列式について、そのバイト数ではなく、文字数を示す整数を返します。この数値には、先頭と末尾の空白や文字列の終了文字の数も含まれます。CHAR_LENGTH は、NULL 値を渡すと NULL を返し、空文字列 ('') の値を渡すと 0 を返します。
数値は、文字数がカウントされる前に解析されます。引用符に囲まれた数値文字列は解析されません。以下の例では、最初の CHAR_LENGTH は 1 を返し (数値の解析によって先頭と末尾の空白が削除されるため)、2 番目の CHAR_LENGTH は 7 を返します。
SELECT DISTINCT CHAR_LENGTH(007.000) AS NumLen,
     CHAR_LENGTH('007.000') AS NumStringLen
     FROM Sample.Employee
CHAR_LENGTH 関数と CHARACTER_LENGTH 関数は同一です。
以下の例は、Sample.Employee テーブルの、州の省略形フィールド (Home_State) にある文字の数を返します (米国のすべての州には 2 文字の郵便用省略形が付けられています)。
SELECT DISTINCT CHAR_LENGTH(Home_State) AS StateLength
     FROM Sample.Employee
以下の例は、各従業員の名前とその名前の文字数を、文字数の昇順で返します。
SELECT Name,
     CHAR_LENGTH(Name) AS NameLength
     FROM Sample.Employee
     ORDER BY NameLength
以下の埋め込み SQL の例は、CHAR_LENGTH で Unicode 文字がどのように処理されるかを示しています。CHAR_LENGTH では、文字のバイト長に関係なく、文字数がカウントされます。
   SET a=$CHAR(960)_"FACE"
   WRITE !,a
   &sql(SELECT CHAR_LENGTH(:a)
   INTO :b
   FROM Sample.Person)
   IF SQLCODE'=0 {
     WRITE !,"Error code ",SQLCODE }
   ELSE {
     WRITE !,"The CHAR length is ",b }
これは、5 を返します。
関連項目