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

%EXACT (SQL)

文字を EXACT 照合形式に変換する照合関数です。

Synopsis

%EXACT(expression)

%EXACT expression

引数

引数 説明
expression 列名、文字列リテラル、数値、または他の関数の結果となる文字列式。基本となるデータ型は、任意の文字タイプ (CHAR や VARCHAR2 など) とすることができます。

概要

%EXACT は、EXACT 照合シーケンス内の expression を返します。この照合シーケンスは、次のように値を順序付けます。

  1. すべての実際の値の前に NULL が照合されます。%EXACT は、NULL に影響しません。これは既定の照合と同じです。

  2. キャノニック形式の数値は (数値として入力されたか、文字列として入力されたかに関係なく)、文字列値よりも先に数値順に照合されます。

  3. 文字列値は、大文字/小文字を区別する文字列順序で照合されます。文字列に対する EXACT 照合シーケンスは、ANSI 標準の ASCII 照合シーケンスと同じものです。数字は大文字のアルファベット文字の前に照合され、大文字のアルファベット文字は小文字のアルファベット文字の前に照合されます。句読点文字は、そのシーケンスのそれぞれの場所で照合されます。

この結果、以下のような順序になります。

NULL
-2        /* canonical number collation */
0
1
2
10
22
88
''         /* empty string */
#          /* character-by-character string collation */
-00        /* non-canonical number collates as string */
0 Elm St.  /* character-by-character string collation */
022        /* non-canonical number collates as string */
1 Elm St.  
19 Elm St.
19 elm St. /* string collation is case-sensitive */
19Elm St.
2 Elm St.
201 Elm St.
21 Elm St.
Elm St.

%EXACT は一般的に、文字が含まれる文字列値を、大文字/小文字を区別する順序で照合するために使用されます。SQL の既定では、照合目的ですべての文字を大文字に変換します。

%EXACT は、InterSystems SQL の拡張機能であり、SQL 検索クエリ用として使用するものです。

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

%EXACT は、入力文字列を完全な数値として (キャノニック形式)、または数字が他の任意の文字と同じように処理される混合文字列として照合します。これを %MVR と比べると、%MVR では文字列内の数値部分文字列に基づいて文字列をソートしている点が異なります。

DISTINCT および GROUP BY

DISTINCT 節とGROUP BY 節は、大文字の既定の照合に基づいて値をグループ化し、実際のデータ値がすべて大文字でない場合でも、すべて大文字で値を返します。

  • %EXACT を使用して、大文字/小文字を区別する値で値をグループ化することができます:SELECT Name FROM mytable GROUP BY %EXACT(Name)

  • %EXACT を使用して、実際の大文字/小文字を区別する値をグループごとに返すことができます:SELECT %EXACT(Name) FROM mytable GROUP BY Name

Note:

既定では、SQL インデックスは文字列データを大文字の既定の照合で表します。このため、EXACT 照合を指定すると、インデックスの使用が妨げられ、潜在的にパフォーマンスに大きな影響を及ぼす可能性があります。

以下の例は、すべての番地を %EXACT 照合で並べます。

SELECT Name,Street 
FROM Sample.Person
ORDER BY %EXACT Street

以下の例は、%EXACT を使用して、'Smith' よりも照合順序が高いすべての Name 値を返します。最初の例は括弧構文を使用し、2 番目の例は括弧を省略しています。

SELECT Name 
FROM Sample.Person
WHERE %EXACT(Name) > 'Smith'
SELECT Name 
FROM Sample.Person
WHERE %EXACT Name > 'Smith'

関連項目

FeedbackOpens in a new tab