Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

CHAR_LENGTH (SQL)

式の文字の数を返す関数です。

Synopsis

CHAR_LENGTH(expression)

引数

引数 説明
expression 列の名前、文字列リテラル、他のスカラ関数の結果などを表すことができる式。基本となるデータ型は (CHAR や VARCHAR など) 任意の文字タイプ、数値、またはデータ・ストリームとすることができます。

CHAR_LENGTH は、INTEGER データ型を返します。

概要

CHAR_LENGTH は、指定された expression について、そのバイト数ではなく、文字数を示す整数値を返します。expression は文字列、または数値やデータ・ストリーム・フィールドなどの他のデータ型とすることができます。返されたこの整数には、先頭と末尾の空白や文字列の終了文字の数も含まれます。CHARACTER_LENGTH は、NULL 値を渡すと NULL を返し、空文字列 ('') の値を渡すと 0 を返します。

数値は、文字数がカウントされる前にキャノニック形式に解析されます。引用符に囲まれた数値文字列は解析されません。以下の例では、最初の CHAR_LENGTH は 1 を返し (数値の解析によって先頭と末尾の 0 が削除されるため)、2 番目の CHAR_LENGTH は 8 を返します。

SELECT CHAR_LENGTH(007.0000) AS NumLen,
       CHAR_LENGTH('007.0000') AS NumStringLen
Note:

CHAR_LENGTH 関数、CHARACTER_LENGTH 関数、および DATALENGTH 関数は同一です。これらのすべてがストリーム・フィールド引数を受け取ります。LENGTH 関数および $LENGTH 関数は、ストリーム・フィールド引数を受け取りません。

LENGTH 関数は、文字数をカウントする前に末尾の空白や文字列の終了文字を削除する点でも、これらの関数とは異なります。

また、$LENGTH は、NULL を渡すと NULL、空文字列を渡すと 0 を返す点でも、これらの関数とは異なります。$LENGTH は、データ型 SMALLINT を返す点で、他の length 関数とは異なります。他の length 関数はすべてデータ型 INTEGER を返します。

以下の例は、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

以下の例は、Sample.Employee テーブル内の文字ストリーム・フィールド (Notes) とバイナリ・ストリーム・フィールド (Picture) の文字数を返します。

SELECT DISTINCT CHAR_LENGTH(Notes) AS NoteLen
     FROM Sample.Employee WHERE Notes IS NOT NULL
SELECT DISTINCT CHAR_LENGTH(Picture) AS PicLen
     FROM Sample.Employee WHERE Picture IS NOT NULL

以下の埋め込み SQL の例は、CHAR_LENGTH で Unicode 文字がどのように処理されるかを示しています。CHAR_LENGTH では、文字のバイト長に関係なく、文字数がカウントされます。

    SET a=$CHAR(960)_"FACE"
    WRITE !,a
    &sql(SELECT CHAR_LENGTH(:a) INTO :b)
    IF SQLCODE'=0 {WRITE !,"Error code ",SQLCODE }
    ELSE {WRITE !,"The CHAR length is ",b }

これは、5 を返します。

関連項目

FeedbackOpens in a new tab