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

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