文字列内の文字数、または文字列内の区切られた部分文字列数を返す汎用 SQL 関数です。
Synopsis
$LENGTH(expression[,delimiter])
$LENGTH は使用される引数に応じて、指定した文字列にある文字数あるいは指定した文字列にある部分文字列数を返します。
この関数は、データ型 SMALLINT を返します。
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
-
引数が 1 つの
$LENGTH は、文字列の文字数を返します。この関数は、位置を基準に部分文字列を特定し、その部分文字列値を返す
$EXTRACT 関数とともに使用できます。
-
引数が 2 つの
$LENGTH は、区切り文字列に基づいて、文字列の部分文字列数を返します。この関数は、区切り文字を基準に部分文字列を特定し、その部分文字列値を返す
$PIECE 関数とともに使用できます。
-
$LENGTH、
$FIND、
$EXTRACT、および
$PIECE 関数は、標準文字の文字列に対して処理を実行します。さまざまな
$LIST 関数は、エンコードされた文字列を操作します。この文字列は、標準の文字列とは互換性がありません。唯一の例外は、
$LISTGET 関数と、引数が 1 つおよび 2 つの形式の
$LIST 関数です。これらの関数は、入力としてエンコードされた文字の文字列を受け取り、単一要素値を標準文字の文字列として出力します。