値を文字列としてソートする照合関数です。
Synopsis
%SQLSTRING(expression[,maxlen])
%SQLSTRING expression
%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 からこの関数を呼び出すこともできます。
SELECT Name FROM Sample.Person
WHERE %SQLSTRING Name %STARTSWITH ' Al'
ORDER BY Name
以下のクエリは、文字列トランケーションを持つ
%SQLSTRING を使用して、各名前の最初の 2 文字を返します。文字列トランケーションは、
%SQLSTRING が先頭の空白を追加するため、3 (2 ではなく) になります。
ORDER BY 節は、この 2 文字フィールドを使用して、行におおまかな照合順を配置します。
SELECT Name, %SQLSTRING(Name,3) AS FirstTwo
FROM Sample.Person
ORDER BY FirstTwo