文字列内の文字数、または文字列内の区切られた部分文字列数を返す汎用 SQL 関数です。
Synopsis
$LENGTH(expression[,delimiter])
引数
expression ターゲット文字列。数値、文字列リテラル、変数名、または任意の有効な式を指定できます。
delimiter オプション — ターゲット文字列にある部分文字列の境界を示す文字列。文字列リテラルを使用する必要がありますが、長さは自由です。また、引用符で囲む必要があります。
概要
$LENGTH は使用される引数に応じて、指定した文字列にある文字数あるいは指定した文字列にある部分文字列数を返します。
この関数は、データ型 SMALLINT を返します。
以下の例は、文字列の長さ 6 を返します。
SELECT DISTINCT $LENGTH('ABCDEG') AS StringLength
FROM Sample.Person
以下の例は、ドル記号 ($) で区切られた文字列内の部分文字列数 3 を返します。
SELECT DISTINCT $LENGTH('ABC$DEF$EFG','$') AS SubStrings
FROM Sample.Person
指定された区切り文字が文字列内に見つからない場合は、文字列全体が 1 つの部分文字列となるため、$LENGTH は 1 を返します。
SELECT DISTINCT $LENGTH('ABCDEG','$') AS SubStrings
FROM Sample.Person
以下の埋め込み SQL の例では、最初の $LENGTH 関数は、a の文字数である 11 を返します (スペース文字もカウントされます)。2 番目の $LENGTH 関数は、部分文字列の区切り文字に b のスペース文字を使用し、a の部分文字列数である 2 を返します。
   SET a="HELLO WORLD"
   SET b=" "
   &sql(SELECT 
   $LENGTH(:a),
   $LENGTH(:a,:b)
   INTO :a1,:a2
   FROM Sample.Person)
   IF SQLCODE'=0 {
     WRITE !,"Error code ",SQLCODE }
   ELSE {
     WRITE !,"The input string: ",a
     WRITE !,"Number of characters: ",a1
     WRITE !,"Number of substrings: ",a2 }
以下の例は、テストされた文字列が NULL 文字列なので 0 を返します。
SELECT DISTINCT $LENGTH(NULL) AS StringLength
FROM Sample.Person
以下の例は、指定された区切り文字が見つからないので 1 を返します。この場合は、部分文字列が 1 つ (NULL 文字列) あることになります。
SELECT DISTINCT $LENGTH(NULL,'$') AS SubStrings
FROM Sample.Person
以下の例は、区切り文字列が NULL 文字列なので 0 を返します。
SELECT DISTINCT $LENGTH('ABCDEFG',NULL) AS SubStrings
FROM Sample.Person
メモ
$LENGTH、$PIECE、および $LIST
$LENGTH$FIND$EXTRACT、および $PIECE 関数は、標準文字の文字列に対して処理を実行します。さまざまな $LIST 関数は、エンコードされた文字列を操作します。この文字列は、標準の文字列とは互換性がありません。唯一の例外は、$LISTGET 関数と、引数が 1 つおよび 2 つの形式の $LIST 関数です。これらの関数は、入力としてエンコードされた文字の文字列を受け取り、単一要素値を標準文字の文字列として出力します。
関連項目