Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

CHARACTER_LENGTH

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

Synopsis

CHARACTER_LENGTH(expression)

引数

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

概要

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

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

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

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

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

以下の例は、Sample.Employee テーブルの、州の省略形フィールド (Home_State) にある文字の数を返します (米国のすべての州には 2 文字の郵便用省略形が付けられています)。

SELECT DISTINCT CHARACTER_LENGTH(Home_State) AS StateLength
     FROM Sample.Employee

以下の例は、各従業員の名前とその名前の文字数を、文字数の昇順で返します。

SELECT Name,
     CHARACTER_LENGTH(Name) AS NameLength
     FROM Sample.Employee
     ORDER BY NameLength

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

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

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

  IF $SYSTEM.Version.IsUnicode() {
    SET a=$CHAR(960)_"FACE"
    WRITE !,a
    &sql(SELECT CHARACTER_LENGTH(:a) INTO :b)
    IF SQLCODE'=0 {WRITE !,"Error code ",SQLCODE }
    ELSE {WRITE !,"The CHARACTER length is ",b }
  }
  ELSE {WRITE "This example requires a Unicode installation of Caché"}

これは、5 を返します。

関連項目

FeedbackOpens in a new tab