Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

%SQLUPPER (SQL)

値を大文字の文字列としてソートする照合関数です。

Synopsis

%SQLUPPER(expression[,maxlen]) 

%SQLUPPER expression

引数

引数 説明
expression 列名、文字列リテラル、または他の関数の結果となる文字列式。基本となるデータ型は、任意の文字タイプ (CHAR や VARCHAR など) とすることができます。expression にはサブクエリを指定できます。
maxlen オプション — 照合された値が、maxlen の値までに切り捨てられることを指定する整数。maxlen には、追加されている先頭の空白が含まれることに注意してください。((maxlen)) のように二重括弧で maxlen を囲むと、リテラル置換を抑制できます。

概要

既定の照合は SQLUPPER です。

%SQLUPPER は、expression を (大文字と小文字を区別しない) 大文字の文字列としてソートされる形式に変換します。%SQLUPPER は、すべてのアルファベット文字を大文字に変換し、後続の空白 (スペースやタブなど) を削除し、文字列の最初の部分に空白を 1 つ追加します。この追加された空白は、NULL と数値を文字列として照合します。

SQL では、数値を関数に渡す前に、先頭と末尾にあるゼロを削除したり、指数を展開したりすることにより、キャノニック形式に変換します。数値文字列はキャノニック形式に変換されません。

%SQLUPPER がすべての値に空白を追加するため、NULL 値を文字列長 1 を持つ空白として照合します。%SQLUPPER は空白 (スペース、タブなど) だけを含む値を SQL 空文字列 (") として照合します。%SQLUPPER が空文字列 (長さがゼロ) に空白を追加すると、空文字列 $CHAR(0) の内部表現が追加された空白として照合し、文字列長 2 という結果になります。

オプションの maxlen 引数は、インデックス指定や照合の際に変換された expression 文字列を、指定された文字数に切り捨てます。例えば、maxlen トランケーションを持つ文字列を挿入する場合、完全な文字列が挿入され、SELECT 文で検索できます。この文字列に対するインデックス・グローバルは、指定された長さに切り捨てられます。これは、ORDER BY と比較演算は、切り捨てられたインデックス文字列のみを評価することを意味します。このようなトランケーションは、InterSystems IRIS 添え字で最大文字長を超える文字列に対してインデックスを指定するときに特に便利です。maxlen 引数では、長いフィールドにインデックスを指定する必要がある場合、トランケーション・レングス・パラメータを使用することができます。

%SQLUPPER は、expression の変換後に maxlen での切り捨てを実行します。変換された expression よりも maxlen の長さが長い場合は、パディングは追加されません。文字列の最大長は 3,641,144 文字です。maxlen には最大値は適用されません。

%SYSTEM.UtilOpens in a new tab クラスの Collation()Opens in a new tab メソッドを使用すると、ObjectScript で同じ照合変換を実行できます。

  WRITE $SYSTEM.Util.Collation("The quick, BROWN fox.",7)

この関数は、ObjectScript から SQLUPPER()Opens in a new tab メソッド・コールを使用して呼び出すこともできます。

  WRITE $SYSTEM.SQL.Functions.SQLUPPER("The quick, BROWN fox.")

これらのメソッドの両方で、SQLUPPER 変換後の切り捨てがサポートされます。切り捨てられた長さには、追加された空白も含まれます。

  WRITE $SYSTEM.Util.Collation("The quick, BROWN fox.",7,6),!
  WRITE $SYSTEM.SQL.SQLUPPER("The quick, BROWN fox.",6)

大文字/小文字を区別する文字列変換に関しては、"%SQLSTRING" を参照してください。

Note:

システム全体の既定の照合を %SQLUPPER (大文字/小文字の区別なし) から %SQLSTRING (大文字/小文字の区別あり) に変更するには、以下のコマンドを使用します。

  WRITE $$SetEnvironment^%apiOBJ("collation","%Library.String","SQLSTRING")

このコマンドを発行した後に、インデックスを削除し、すべてのクラスを再コンパイルしてから、再度インデックスを構築する必要があります。他のユーザがテーブルのデータにアクセスしている間はインデックスを再構築しないでください。再構築すると、クエリ結果が不正確になる可能性があります。

その他の大文字/小文字変換関数

%SQLUPPER 関数は、大文字と小文字を区別しない比較または照合に対してデータ値を変換する、SQL で優先的な方法です。%SQLUPPER は、データの最初の部分に空白を追加します。それによって、数値データと NULL 値を文字列として解釈させます。

以下は、データ値を大文字/小文字変換するその他の関数です。

  • UPPER および UCASE: 文字を大文字に変換し、数字文字、句読点、埋め込みの空白、および先頭と末尾の空白に影響を与えません。数値を文字列として解釈する変換を強制的に実行しません。

  • LOWER および LCASE : 文字を小文字に変換し、数字文字、句読点、埋め込みおよび先頭と末尾の空白に影響を与えません。数値を文字列として解釈する変換を強制的に実行しません。

  • %SQLSTRING : 文字の大文字小文字を変換しません。ただし、データの最初の部分に空白を追加します。それによって、数値データと NULL 値を文字列として解釈させます。

英数字の照合順序

大小文字変換関数は、以下のような異なるアルゴリズムを使用して数字で始まるデータ値を照合します。

%MVR %SQLUPPER%SQLSTRING、およびその他の大小文字変換関数
6 Oak Avenue, 66 Main Street, 66 Oak Street, 641 First Place, 665 Ash Drive, 672 Main Court, 709 Oak Avenue, 5988 Clinton Avenue, 6023 Washington Court, 6090 Elm Court, 6185 Clinton Drive, 6209 Clinton Street, 6284 Oak Drive, 6310 Franklin Street, 6406 Maple Place, 6572 First Avenue, 6643 First Street, 6754 Oak Court, 6986 Madison Blvd, 7000 Ash Court, 5988 Clinton Avenue, 6 Oak Avenue, 6023 Washington Court, 6090 Elm Court, 6185 Clinton Drive, 6209 Clinton Street, 6284 Oak Drive, 6310 Franklin Street, 6406 Maple Place, 641 First Place, 6572 First Avenue, 66 Main Street, 66 Oak Street, 6643 First Street, 665 Ash Drive, 672 Main Court, 6754 Oak Court, 6986 Madison Blvd, 7000 Ash Court, 709 Oak Avenue,

以下のクエリは、文字列トランケーションを持つ %SQLUPPER を使用して、大文字の各名前の最初の 2 文字を返します。文字列トランケーションは、%SQLUPPER が先頭の空白を追加するため、3 (2 ではなく) になります。ORDER BY 節は、この 2 文字フィールドを使用して、行におおまかな照合順を配置します。

SELECT Name, %SQLUPPER(Name,3) AS FirstTwo
FROM Sample.Person
ORDER BY FirstTwo

以下の例では、%SQLUPPER をサブクエリに適用しています。

SELECT TOP 5 Name, %SQLUPPER((SELECT Name FROM Sample.Company),10) AS Company
FROM Sample.Person

関連項目

FeedbackOpens in a new tab