値を文字列としてソートする照合関数です。
Synopsis
%SQLSTRING(expression{,maxlen})

%SQLSTRING expression
引数
expression 列名、文字リテラル、または他の関数の結果となる文字列式。 基本データ型は、さまざまな文字タイプ (CHAR や VARCHAR2 など) として表示します。
maxlen オプション — 照合された値が、maxlen の値にまで切り捨てられることを指定する正の整数。
概要
%SQLSTRING は、expression を (大文字と小文字を区別する) 文字列としてソートされる形式に変換します。%SQLSTRING は、後続の空白 (スペースやタブなど) を削除し、文字列の最初の部分に空白を 1 つ追加します。この追加された空白は、NULL と数値を強制的に文字列として照合します。先頭と末尾のゼロは数値から削除されます。
%SQLSTRING がすべての値に空白を追加するため、NULL 値を文字列長 1 を持つ空白として照合します。%SQLSTRING は、空白 (スペースやタブなど) だけを含む値を SQL 空文字列 (") として照合します。%SQLSTRING が空文字列 (長さがゼロ) に空白を追加すると、空文字列 $CHAR(0) の内部表現が追加された空白として照合し、文字列長 2 という結果になります。
オプションの maxlen パラメータは、インデックス指定や照合の際に expression 文字列を指定された文字数に切り捨てます。例えば、maxlen トランケーションを持つ長い文字列を挿入する場合、完全な文字列が挿入され、SELECT 文で検索できます。この文字列に対するインデックス・グローバルは、指定された長さに切り捨てられます。これは、ORDER BY と比較演算は、切り捨てられたインデックス文字列のみを評価することを意味します。このようなトランケーションは、Caché 添え字で 255 文字制限を超える文字列に対してインデックスを指定するときに特に便利です。Caché 以外のシステムから変換する際、VARCHAR(255) の索引をつけ、次にデータをテーブルに挿入しようとして、問題が生じることがありました。maxlen パラメータでは、長いフィールドにインデックスを指定する場合、トランケーション・レングス・パラメータを使用することができます。
大文字/小文字を区別しない文字列変換に関しては、%SQLUPPER を参照してください。
以下のメソッド・コールを使用することで、Caché ObjectScript からこの関数を呼び出すこともできます。
$SYSTEM.SQL.SQLSTRING(expression,maxlen)
以下のクエリは、WHERE 節の %SQLSTRING を使用します。
SELECT Name FROM Sample.Person
WHERE %SQLSTRING Name %STARTSWITH ' Al'
ORDER BY Name
WHERE 節は、最初は (Name 列内の) 各名前を %SQLSTRING 形式に変換し、次に、%STARTSWITH を使用して “Al” から始まるすべての名前 (Allen や Alton など) を返します。%SQLSTRING が文字列を変換する際に文字列の先頭に空白を追加するため、%STARTWITH 文字列は先頭の空白を含むことに注意してください。
以下のクエリは、文字列トランケーションを持つ %SQLSTRING を使用して、各名前の最初の 2 文字を返します。文字列トランケーションは、%SQLSTRING が先頭の空白を追加するため、3 (2 ではなく) になります。ORDER BY 節は、この 2 文字フィールドを使用して、行におおまかな照合順を配置します。
SELECT Name, %SQLSTRING(Name,3) AS FirstTwo
FROM Sample.Person
ORDER BY FirstTwo
関連項目
%SQLUPPER