C SQL操作の照合導出および決定ルール

この付録では、SQL操作の照合導出および決定ルールについて説明します。この付録の内容は次のとおりです。

C.1 照合導出

SQL操作の文字結果の照合を決定するプロセスを照合導出と言います。このような操作として、演算子、列参照、文字リテラル、バインド変数参照、関数コール、CASE式または問合せ句があります。

SQL式の各文字値には、導出された照合と導出された照合順序強制性レベルがあります。

次の表に、基本的な式の導出された照合と照合順序強制性レベルを示します。

表C-1 様々な式タイプの導出された照合と導出された照合順序強制性レベル

式のタイプ 導出された照合 導出された照合順序強制性レベル

COLLATE演算子の結果

COLLATE演算子に指定された名前付き照合または擬似照合

0

表、ビューまたはマテリアライズド・ビューの列参照などのデータ・コンテナ参照

データ・コンテナの宣言された名前付き照合または擬似照合

2

PL/SQL関数コールまたはユーザー定義演算子の結果

USING_NLS_COMP照合

2

文字リテラル

最上位の文に含まれている場合はUSING_NLS_COMP照合、そうではなくそのソースに含まれている場合は、ビュー、マテリアライズド・ビューまたはPL/SQLユニットのデフォルトの照合

4

OCI_ATTR_COLLATION_ID属性が対応するバインド変数ハンドルに設定されていない場合の文字バインド変数参照

USING_NLS_COMP照合

4

OCI_ATTR_COLLATION_ID属性が対応するバインド変数ハンドルに設定されている場合の文字バインド変数参照

IDが属性値として渡される照合

0

ノート:

  • 照合順序強制性レベル1は、割り当てられた照合がないことです

  • 照合順序強制性レベル3は、将来の使用のために予約されています

操作結果の導出照合と照合順序強制性レベルは、操作の引数の照合および照合順序強制性レベルに基づきます。操作の導出関連の文字引数とは、操作結果の照合を導出するために使用される引数です。1つの演算子には、0個以上の導出関連の文字引数と、0個以上のその他の文字引数(たとえば、フラグまたは導出関連の引数と直接対話しないその他の制御情報など)が含まれます。引数の値が変換後に、または変換なしで結果に含まれる場合、その引数は導出関連であるとみなされます。

書式モデル、パターン、フラグ文字列、またはシステム情報の仮想表へのキーである引数は、導出関連の引数とはみなされません。たとえば、組込み関数TO_CHAR(arg1,arg2,arg3)は、メイン引数arg1が文字データ型の引数ではないため、導出関連の引数はありません。2つの文字引数arg2およびarg3は、メイン引数arg1の変換の書式およびパラメータを定義するだけであるため、導出関連の引数ではありません。

導出関連の引数を持たない操作の結果の導出された照合と照合順序強制性レベルは、その式に操作のかわりに文字リテラルを指定した場合と同じになります。

次に、文字値を戻す、導出関連の引数を持つ操作に対する照合導出ルールを示します。これらのルールは、式ツリーに再帰的に適用されます。これらのルールは、SQL標準バージョンISO/IEC 9075-2:1999に基づいています。

導出関連の文字引数arg1, arg2, …, argnを持つ操作の結果の導出照合は、次のようになります。

  • 少なくとも1つの引数の照合順序強制性レベルが0である場合、照合順序強制性レベルが0であるすべての引数には同じ照合、つまり、結果の導出照合が割り当てられる必要があります。結果の照合順序強制性レベルは0です。照合順序強制性レベルが0である2つの引数に異なる照合が指定されると、エラーがレポートされます。

  • そうではなく、少なくとも1つの引数の照合順序強制性レベルが1である場合は、式結果は照合順序強制性レベル1になり、照合は割り当てられません。

  • そうでない場合、LCLが引数の数値的に最も小さい照合順序強制性レベルである場合は、次のようになります。

    • LCLが指定されたすべての引数に同じ照合が指定されている場合、この照合は、結果の導出された照合であり、結果の照合順序強制性レベルはLCLになります。

    • そうでない場合、式の結果の照合順序強制性レベルは1になり、照合は割り当てられません。

ノート:

set演算子には、式リストである引数があります。set演算子については、照合導出は、式リスト内の各引数の対応する要素に対して個別に実行されます。たとえば、次の問合せがあるとします。

SELECT expr1, expr2 FROM t1
UNION
SELECT expr3, expr4 FROM t2

照合は、結果セットの最初の列と2番目の列に対して個別に導出されます。最初の列については、照合導出ルールはexpr1およびexpr3に適用されます。2番目の列については、照合導出ルールはexpr2およびexpr4に適用されます。

バインド変数参照の照合導出

OCIでは、OCI_ATTR_COLLATION_ID属性の値を使用して、問合せまたはDML文でバインド変数の照合を渡すことができます。バインド変数ハンドルで、OCIAttrSet()関数を使用してOCI_ATTR_COLLATION_ID属性をサポートされる照合IDのいずれかに設定できます。名前付き照合および疑似照合の両方のIDが許可されます。この場合、バインド変数参照の導出される照合順序強制性レベルは0です。

バインド変数ハンドルでOCI_ATTR_COLLATION_ID属性値がOCI_COLLATION_NONE (デフォルト値)に設定されている場合、バインド変数の照合はUSING_NLS_COMPで、バインド変数参照の導出される照合順序強制性レベルは4です。

OCIでは、バインド変数の特定のデータ型に対して照合が有効かどうかはチェックされません。OCI_ATTR_COLLATION_ID属性値が非文字データ型変数に対して設定されている場合、データベース・サーバーによって無視されます。

バインド変数の照合は、現在PL/SQL式では無視されます。上位互換性のために、変数がSQL文でのみ参照される場合を除いて、OCI_ATTR_COLLATION_ID属性を匿名PL/SQLブロックに渡されるバインド変数に対して設定しないでください。

関連項目:

OCI_ATTR_COLLATION_ID属性の詳細は、Oracle Call Interfaceプログラマーズ・ガイドを参照してください。

C.2 照合決定

照合決定とは、照合依存操作の実行中に、適用する正しい照合を選択するプロセスです。照合依存操作には、SQL演算子、条件、組込み関数コール、CASE式または問合せ句などがあります。

Oracle Databaseリリース12.2以前では、操作で適用される照合はNLS_SORTおよびNLS_COMPセッション・パラメータによってのみ決定されていました。

ノート:

NLS_UPPER、NLS_LOWER、NLS_INITCAPおよびNLSSORTのオプションの2つ目のパラメータは例外です。

Oracle Databaseリリース12.2以降では、操作で適用される照合は、その引数のデータ・バインドされた導出照合によって決定されます。使用する照合が擬似照合であると決定されると、適用する実際の名前付き照合を指定するためにNLS_SORTおよびNLS_COMPセッション・パラメータがチェックされます。

ノート:

照合決定は、照合導出が適用される操作と同じ操作には適用する必要はありません。たとえば、TO_CHAR関数は照合依存ではないため、照合決定は必要ありません。ただし、TO_CHARは照合宣言を必要とする文字結果を戻すため、照合導出が適用されます。これに対し、INSTR関数は文字を照合する必要があり、この照合操作のために照合を決定する必要があります。ただし、INSTR関数の結果は数値であるため、照合導出は必要ありません。

操作の決定関連の文字引数とは、操作によって使用される照合を決定するために使用される引数です。照合依存操作には、1つ以上の決定関連の文字引数と、0個以上のその他の文字引数(たとえば、フラグまたは決定関連の引数と直接対話しないその他の制御情報など)があります。

引数は、操作の評価中に値が比較される場合、決定関連であるとみなされます。書式モデル、フラグ文字列、またはシステム情報の仮想表へのキーである引数は、決定関連の引数とはみなされません。ただし、パターン引数は決定関連の引数である場合があります。たとえば、LIKE述語の3つの引数のうちの2つ、つまりargumentとpatternは、決定関連の引数です。3つ目の引数であるエスケープ文字は、決定関連の引数とはみなされません。別の例として、4つの引数source_char、pattern、positionおよび match_paramを持つ組込み関数REGEXP_COUNTがあります。決定関連の引数は、比較対象の文字を含むsource_charおよびpatternです。決定関連でない文字引数は、数値であるpositionと、照合操作のパラメータを指定するmatch_paramです。

決定関連の文字引数arg1, arg2, …, argnを持つ操作に使用する照合を決定するための照合決定ルールは、次のとおりです。これらのルールは、SQL標準バージョンISO/IEC 9075-2:1999に基づいています。

  • 操作が等価条件であり、外部キー制約を適用するために使用される場合、使用する照合は、参照先の主キーまたは一意キー列の宣言された照合です。この宣言された照合は、外部キー列の宣言された照合と同じである必要があります。

  • そうではなく、少なくとも1つの引数の導出された照合順序強制性レベルが0である場合、照合順序強制性レベルが0であるすべての引数には同じ照合が割り当てられる必要があり、この照合が操作で使用されます。照合順序強制性レベルが0である2つの引数に異なる照合が指定されると、エラーがレポートされます。

  • そうではなく、少なくとも1つの引数の導出された照合順序強制性レベルが1である場合は、エラーがレポートされます。

  • そうでない場合、LCLが引数の数値的に最も小さい照合順序強制性レベルである場合は、次のようになります。

    • LCLが指定されたすべての引数に同じ照合が指定されている場合、その照合が操作で使用されます。

    • 指定しないとエラーがレポートされます。

決定された照合が擬似照合である場合、適用する実際の名前付き照合を指定するために、影響を受ける操作はセッションまたはデータベース設定NLS_SORTまたはNLS_COMP、あるいはこれら両方を参照する必要があります。データベース設定は、仮想列、CHECK制約およびファイングレイン監査(FGA)規則の式で使用されます。

CLOBまたはNCLOBデータ型が関連する操作の照合決定ルールでは、結果として擬似照合USING_NLS_COMPが指定される必要があり、そうでない場合はエラーがレポートされます。

ノート:

いくつかの条件、set演算子および問合せ句には、式リストである引数があります。この場合、照合決定は、式リスト内の各引数の対応する比較対象要素で実行されます。たとえば、次の条件があるとします。

(expr1, expr2) IN (SELECT expr3, expr4 FROM t1)

照合は、比較される要素のペアに対して個別に決定されます。最初に、照合決定ルールはexpr1およびexpr3に適用されます。次に、expr2およびexpr4にルールが適用されます。条件が評価されるときに、最初に決定された照合を使用して、expr1の値がexpr3の値と比較され、2番目に決定された照合を使用して、expr2の値がexpr4の値と比較されます。同様に、次の問合せがあるとします。

SELECT expr1, expr2 FROM t1
MINUS
SELECT expr3, expr4 FROM t2

照合決定ルールは、最初にexpr1およびexpr3に適用され、その後expr2およびexpr4に適用されます。MINUS演算子が評価されるときに、最初に決定された照合を使用して、expr1の値がexpr3の値と比較され、2番目に決定された照合を使用して、expr2の値がexpr4の値と比較されます。

次の問合せがあるとします。

SELECT * FROM t1 ORDER BY expr1, expr2, expr3

行は、最初に、導出照合expr1を使用してexpr1の値でソートされ、次に、同順位の場合、導出照合expr2を使用してexpr2の値でソートされ、また次に、導出照合expr3を使用してexpr3の値でソートされます。ORDER BYリスト内の各位置は、行の値に対する個別の比較演算子のように扱われます。

C.3 SQL操作とその導出および決定関連の引数

次の表に、文字値を戻すSQL操作、照合依存であるSQL操作、あるいはその両方であるSQL操作のすべてを示します。文字値を戻す各操作については、操作の導出関連の引数を示します。操作にこのような引数がない場合は、かわりに操作結果の固定された照合を示します。リテラル照合という用語は、操作の結果に対して導出された照合が、式に操作のかわりに指定された文字リテラルの照合、つまり、最上位のSQL文のUSING_NLS_COMPまたはビュー、マテリアライズド・ビューまたはソース式を含むPL/SQLストアド・ユニットのデフォルト照合であることを意味します。各照合依存操作について、次の表に操作の決定関連引数を示します。

表C-2 SQL操作の導出関連および決定関連引数

操作タイプ 操作名 操作の説明 導出関連引数または固定照合 決定関連引数

擬似列

VERSIONS_OPERATION

フラッシュバック・バージョン問合せの操作タイプ

リテラル照合

—

擬似列

COLUMN_VALUE

文字データ型のネストした表要素の値

USING_NLS_COMP

—

演算子

a1 || a2

文字値の連結

a1, a2

—

演算子

PRIOR a1

階層問合せの親値

a1

—

演算子

CONNECT_BY_ROOT a1

階層問合せのルート値

a1

—

演算子

SELECT a11, a21,...am1 
FROM ...

UNION ALL

SELECT a12, a22,...am2 
FROM ...

2つの行セットの重複のある和集合

a11, a12, a21, a22, ...am1, am2

結果の行セットの各列に使用する照合は、2つの引数行セットそれぞれからの列の照合を組み合せて個別に導出されます。

特殊なケース: 引数ai2 (1<=i<=m)がWITH句の再帰メンバーに属しており、再帰的に計算される場合は、照合はアンカー・メンバーの対応する引数ai1から導出されます。

—

演算子

SELECT a11, a21,...am1 
FROM ... 

UNION

SELECT a12, a22,...am2 
FROM ... 

2つの行セットの重複のない和集合

a11, a12, a21, a22, ...am1, am2

結果の行セットの各列に使用する照合は、2つの引数行セットそれぞれからの列の照合を組み合せて個別に導出されます。

a11, a12, a21, a22, ...am1, am2

引数行セットの各列の比較に使用する照合は、2つの引数行セットそれぞれからの列の照合を組み合せて個別に決定されます。

演算子

SELECT a11, a21,...am1 
FROM ...

INTERSECT

SELECT a12, a22,...am2 
FROM ... 

2つの行セットの重複のない積集合

a11, a12, a21, a22, ...am1, am2

結果の行セットの各列に使用する照合は、2つの引数行セットそれぞれからの列の照合を組み合せて個別に導出されます。

a11, a12, a21, a22, ...am1, am2

引数行セットの各列の比較に使用する照合は、2つの引数行セットそれぞれからの列の照合を組み合せて個別に決定されます。

演算子

SELECT a11, a21,...am1 
FROM ...

MINUS

SELECT a12, a22,...am2 
FROM ... 

行セットの重複のない差集合

a11, a12, a21, a22, ...am1, am2

結果の行セットの各列に使用する照合は、2つの引数行セットそれぞれからの列の照合を組み合せて個別に導出されます。

a11, a12, a21, a22, ...am1, am2

引数行セットの各列の比較に使用する照合は、2つの引数行セットそれぞれからの列の照合を組み合せて個別に決定されます。

式

CASE 
  WHEN c1 THEN r1 
  WHEN c2 THEN r2 
  ... 
  WHEN cn THEN rn 
ELSE 
  rn+1 
END

検索CASE式

r1,r2,...rn,rn+1

各条件c1,...cnには、独立した照合決定があります。

式

CASE v 
  WHEN s1 THEN r1 
  WHEN s2 THEN r2 
  ... 
  WHEN sn THEN rn 
ELSE 
  rn+1 
END

単純CASE式。次と同じになります。

CASE 
 WHEN v=s1 THEN r1
 WHEN v=s2 THEN r2
 ... 
 WHEN v=sn THEN rn 
ELSE 
  rn+1 
END
r1,r2,...rn,rn+1
v, s1, s2, ...sn
vの照合は次の照合より優先されないとします。
s1, s2, ...sn
この場合、単純CASE式は内部的に検索CASE式に変換されます。

式

オブジェクト・アクセス式

オブジェクト・メソッドへの参照

USING_NLS_COMP

—

式

:name

バインド変数参照

リテラル照合

—

式

(a1,...an)

式リスト

各リスト要素には、それぞれ個別に独立して導出された照合があります。

2つのリストが比較される場合、照合決定は、両方のリストの同じ索引で2つの文字データ型要素それぞれに対して個別に独立して実行されます。

条件

a1 =  a2
a1 <> a2
a1 <  a2
a1 >  a2
a1 >= a2
a1 <= a2

単純比較条件

—

a1, a2

a1およびa2がリストである場合は、前述の「式リスト」を参照してください。

条件

a1 =  ANY (a2, ...an)
a1 <> ANY (a2, ...an)
a1 <  ANY (a2, ...an)
a1 >  ANY (a2, ...an)
a1 >= ANY (a2, ...an)
a1 <= ANY (a2, ...an)

(ANYはSOMEまたはALLに置き換えられる場合があります)

リスト比較条件。次と同じです。

a1 <op> a2 AND|OR 
a1 <op> a3 AND|OR 
... 
a1 <op> an

—

a1, a2 
a1, a3 
...
a1, an

照合は、各ペアに対して個別に決定されます。a1からanがリストである場合は、前述の「式リスト」を参照してください。

条件

a1 = ANY 
(SELECT a2 FROM ...)

a1 <> ANY 
(SELECT a2 FROM ...)

a1 < ANY 
(SELECT a2 FROM ...)

a1 > ANY 
(SELECT a2 FROM ...)

a1 >= ANY 
(SELECT a2 FROM ...)

a1 <= ANY 
(SELECT a2 FROM ...)

(ANYはSOMEまたはALLに置き換えられる場合があります)

問合せ比較条件

—

a1, a2

a1およびa2がリストである場合は、前述の「式リスト」を参照してください。

条件

a1 [NOT] LIKE [2|4|C] 
a2 ESCAPE a3

a2でエスケープ文字としてa3を使用して、パターンa2が文字列a1と一致するかどうかをチェックします

—

a1, a2

条件

REGEXP_LIKE(a1,a2,[a3])

a3のフラグに従って、正規表現a2が文字列a1と一致するかどうかをチェックします

—

a1, a2

条件

a1 [NOT] BETWEEN 
a2 AND a3

範囲比較。次と同じです。

a1 >= a2 AND 
a1 <= a3

—

a1, a2 
a1, a3

照合は、各比較に対して個別に決定されます。

条件

a1 [NOT] IN (a2,a3,...an)

メンバーシップ比較。次と同じです。

a1 = ANY(a2,a3,...an)

—

前述の「=ANY」を参照

関数

APPROX_COUNT_DISTINCT(a1)

結果セット内のa1の個別値の近似カウント

—

a1

関数

ASCIISTR(a1)

Unicodeエスケープを使用してa1内の非ASCII文字をエスケープします

a1

—

関数

CAST(a1 AS <character data type>)

値a1を文字データ型にキャストします

a1が文字データ型である場合はa1、そうでない場合はリテラル照合。

—

関数

CHR(a1)

数値コードa1を文字に変換して、VARCHAR2文字列として戻します

リテラル照合

—

関数

COALESCE(a1,a2,...an)

a1, a2, ...anのうちの最初の非NULL値

COALESCE(a1,a2)は、次と同じです。

CASE 
 WHEN a1 IS 
      NOT NULL 
 THEN a1 
ELSE a2 
END;

COALESCE(a1,a2,...an)は、次と同じです。

CASE 
 WHEN a1 IS 
      NOT NULL 
THEN a1 
ELSE 
 COALESCE (a2,...an)
END;
a1, a2, ...an

—

関数

COLLATION(a1)

a1の導出照合の名前を文字列として戻します

リテラル照合

—

関数

COLLECT( 
[DISTINCT] a1 
ORDER BY a2)

ネストした表に集計します

—

DISTINCTに対してはa1

ORDER BYに対してはa2

関数

COMPOSE(a1)

a1をUnicode NFCに正規化します

a1

—

関数

CONCAT(a1,a2)

文字列a1およびa2を連結します

a1, a2

—

関数

CONVERT(a1[,a2[,a3]])

a1の文字セットをa3からa2に変換します

a1

—

関数

COUNT(DISTINCT a1)

結果セット内のa1の個別値をカウントします

—

a1

関数

CORR_K(a1,a2,a3)

Kendallの順位相関係数(Kendall's tau)

—

a1, a2

照合は、各引数に対して独立して決定されます。

関数

CORR_S(a1,a2,a3)

Spearmanの順位相関係数(Spearman's rho)

—

a1, a2

照合は、各引数に対して独立して決定されます。

関数

CUBE_TABLE(...)

リレーショナル表へのOLAPキューブまたは階層

(生成された表内の文字データ型の各列に対する)リテラル照合

—

関数

CV([a1])

MODEL句内の現在のディメンション値

CV()コールが対応するディメンション列の照合、a1または暗黙的

—

関数

DBTIMEZONE

文字列としてのデータベース・タイム・ゾーン

リテラル照合

—

関数

DECODE(v1,s1,r1,s2,r2,...,sn,rn,rn+1)

値の選択

r1,r2,...rn,rn+1
v1, s1, s2, ...sn

関数

DECOMPOSE(a1,a2)

Unicode正規化(NFD、NFKD)。a2は要求された正規化フォームです

a1

—

関数

DENSE_RANK([a1,a2,...an])

値グループ内の値の稠密ランク

—

ランキングは、関数のORDER BY句内の要素の照合に基づきます。

関数

DUMP(a1[,a2[,a3[,a4]]])

フォーマットa2で、位置a3から値a1をa4バイト取得するデバッグ用ダンプ

リテラル照合

—

関数

EMPTY_CLOB

空のCLOBロケータ

USING_NLS_COMP

—

関数

EXTRACT(
  TIMEZONE_REGION |
  TIMEZONE_ABBR 
FROM a1)

日時値a1からタイム・ゾーン情報を抽出します

リテラル照合

—

関数

EXTRACTVALUE(a1,a2[,a3])

XMLTypeから要素値を抽出します

リテラル照合

—

関数

FIRST_VALUE(a1)

行セットからのa1の最初の値

a1

—

関数

GREATEST(a1,a2,...an)

a1、...anのうちの最大値

a1, a2, ...an
a1, a2, ...an

関数

INITCAP(a1)

a1の先頭文字を大文字にします

a1

—

関数

INSTR[B|2|4|C](a1,a2[,a3[,a4]])

位置a3から開始した、文字列a1内の文字列a2のa4番目の出現位置

—

a1, a2

関数

JSON_QUERY(a1,a2,...)

JSONパス式a2によって記述されているJSONオブジェクトa1のフラグメントを文字列として取得します

リテラル照合

—

関数

JSON_TABLE(a1,a2,...)

JSONパス式a2によって記述されているJSONオブジェクトa1のフラグメントを仮想リレーショナル表として表します

(生成された表内の文字データ型の各列に対する)リテラル照合

—

関数

JSON_VALUE(a1,a2,...)

JSONパス式a2によって記述されているJSONオブジェクトa1のスカラー値をSQLスカラー値として取得します

リテラル照合

—

関数

LAG(a1[,a2[,a3]]) 

行オフセットa2のa1の値、または範囲外の場合はa3

a1

—

関数

LAST_VALUE(a1)

行セットからのa1の最後の値

a1

—

関数

LEAD(a1[,a2[,a3]])

行オフセットa2のa1の値、または範囲外の場合はa3

a1

—

関数

LEAST(a1,a2,...an)

a1、...anのうちの最小値

a1, a2, ...an
a1, a2,...an

関数

LISTAGG(a1[,a2])

複数の行からa1 の値をリストに集計します。a2はセパレータです

a1が文字データ型である場合はa1、そうでない場合は、RAWでない場合はリテラル照合

—

関数

LOWER(a1)

a1を小文字にします

a1

—

関数

LPAD(a1,a2[,a3])

表示長がa2になるまで、文字列a1の左側に文字列a3を付加します

a1

—

関数

LTRIM(a1[,a2])

文字列a2で文字(空白)が見つかったら、a1の先頭(右側)から文字(空白)を削除します

a1 a1

関数

MAX(a1)

結果セット内のa1の最大値

a1
a1

関数

MIN(a1)

結果セット内のa1の最小値

a1 a1

関数

NCHR(a1)

数値コードa1を文字に変換して、NVARCHAR2文字列として戻します

リテラル照合

—

関数

NLS_CHARSET_NAME(a1)

ID a1が指定された文字セットの名前

リテラル照合

—

関数

NLS_COLLATION_NAME(a1)

ID a1が指定された照合の名前

リテラル照合

—

関数

NLS_INITCAP(a1[,a2])

オプションでa2に指定した照合を使用して、a1の先頭文字を大文字にします

a1

a1

NLS_SORTを使用してa2に指定した照合はa1の照合をオーバーライドしますが、これは実行時のみです。

COLLATION(NLS_INITCAP(a1, a2))はa1の照合を戻します

関数

NLS_LOWER(a1[,a2])

オプションでa2に指定した照合を使用して、a1を小文字にします

a1

a1

NLS_SORTを使用してa2に指定した照合はa1の照合をオーバーライドしますが、これは実行時のみです。

COLLATION(NLS_LOWER(a1, a2))はa1の照合を戻します

関数

NLS_UPPER(a1[,a2])

オプションでa2に指定した照合を使用して、a1を大文字にします

a1

a1

NLS_SORTを使用してa2に指定した照合はa1の照合をオーバーライドしますが、これは実行時のみです。

COLLATION(NLS_UPPER(a1, a2))はa1の照合を戻します

関数

NLSSORT(a1[,a2])

オプションでa2に指定した照合を使用して、a1の照合キーを生成します

—

a1

NLS_SORTを使用してa2に指定した照合はa1の照合をオーバーライドしますが、これは実行時のみです。

関数

NTH_VALUE(a1,n)

行セットからのa1のn番目の値

a1

—

関数

NULLIF(a1,a2)

a1=a2の場合はNULL、そうでない場合はa1

これは、次の操作に相当します。

CASE 
 WHEN a1=a2 
 THEN NULL 
ELSE a1
END;
a1
a1, a2

関数

NVL(a1,a2)

a1がNULLでない場合はa1、そうでない場合はa2.

a1, a2

—

関数

NVL2(a1,a2,a3)

a1がNULLでない場合はa2、そうでない場合はa3。

a2, a3

—

関数

ORA_INVOKING_USER

起動ユーザー名

リテラル照合

—

関数

PATH(a1)

リソースへのパス。

リテラル照合

—

関数

PERCENT_RANK([a1,a2,...an])...

値グループ内の値のパーセント・ランク

—

ランキングは、関数のORDER BY句内の要素の照合に基づきます。

関数

PREDICTION

データ・マイニングの予測

リテラル照合

—

関数

PRESENTNNV(a1,a2,a3)

セル参照a1が、包含するMODEL句の実行前に存在しており関数の評価時にNULLでない場合は、a2を戻し、それ以外の場合はa3を戻します

a2, a3

—

関数

PRESENTV(a1,a2,a3)

セル参照a1が、包含するMODEL句の実行前に存在する場合は、a2を戻し、それ以外の場合はa3を戻します。

a2, a3

—

関数

PREVIOUS(a1)

MODEL句での反復の最初にあるセル参照a1の値

a1

—

関数

RANK([a1,a2,...an])

値グループ内の値のランク

—

ランキングは、関数のORDER BY句内の要素の照合に基づきます。

関数

RAWTOHEX(a1)

RAW値a1を16進表記のVARCHAR2文字列に変換します

リテラル照合

—

関数

RAWTONHEX(a1)

RAW値a1を16進表記のNVARCHAR2文字列に変換します

リテラル照合

—

関数

REGEXP_COUNT(a1,a2[,
a3[,a4]])

フラグa4に従って、位置a3から一致を開始し、正規表現a2が文字列a1の部分文字列と一致する回数

—

a1, a2

関数

REGEXP_INSTR(a1,a2[,
a3[,a4[,a5[,a6[,a7]]]]])

フラグa6に従って、位置a3から一致を開始し、正規表現a2が文字列a1の部分文字列とa4回目に一致する、a1内の最小位置。a5およびa7は、実際に戻される位置を制御します

—

a1, a2

関数

REGEXP_REPLACE(a1,a2[,
a3[,a4[,a5[,a6]]]])

フラグa6に従って、位置a4から一致を開始し、文字列a1の部分文字列と正規表現a2が一致するすべての箇所またはa5回目の一致箇所を文字列a3に置換します

a1
a1, a2

関数

REGEXP_SUBSTR(a1,a2[,
a3[,a4[,a5[,a6]]]])

フラグa5に従って、位置a3から一致を開始し、文字列a1内で正規表現a2がa4回目に一致する部分文字列を戻します。a6が指定されている場合、これは一致する部分文字列全体に戻される副次式の索引です。

a1
a1, a2

関数

REPLACE(a1,a2[,a3])

a1内のa2のすべての出現箇所をa3に置換します

a1
a1, a2

関数

ROWIDTOCHAR(a1)

行ID a1をVARCHAR2文字列に変換します

リテラル照合

—

関数

ROWIDTONCHAR(a1)

行ID a1をNVARCHAR2文字列に変換します

リテラル照合

—

関数

RPAD(a1,a2[,a3])

表示長がa2になるまで、文字列a1の右側に文字列a3を付加します

a1

—

関数

RTRIM(a1[,a2])

文字列a2で文字(空白)が見つかったら、その文字をa1の末尾(左側)から文字(空白)を削除します

a1
a1

関数

SESSIONTIMEZONE

文字列としてのデータベース・タイム・ゾーン

リテラル照合

—

関数

SOUNDEX(a1)

a1の音声表現(発音比較)

a1

—

関数

STATS_BINOMIAL_TEST(a1,a2,a3[,a4])

a1とa2の二値変数の直接確立法

—

a1

関数

STATS_CROSSTAB(a1,a2[,
a3])

a1とa2のクロスタブ分析

—

a1, a2

照合は、各引数に対して独立して決定されます。

関数

STATS_F_TEST(a1,a2[,
a3[,a4]])

a1とa2の分散分析

—

a1

関数

STATS_KS_TEST(a1,a2[,
a3])

コルモゴロフ-スミルノフ関数

—

a1, a2

照合は、各引数に対して独立して決定されます。

関数

STATS_MODE(a1)

結果セット内のa1の最頻値

a1
a1

関数

STATS_MW_TEST(a1,a2[,
a3])

Mann-Whitney検定

—

a1, a2

照合は、各引数に対して独立して決定されます。

関数

STATS_ONE_WAY_ANOVA(a1,a2[,a3])

一元配置分散分析

—

a1

関数

STATS_T_TEST_INDEP(a1,a2[,a3[,a4]])

同じ分散を持つ独立したグループのt検定

—

a1

関数

STATS_T_TEST_INDEPU(a1,a2[,a3[,a4]])

分散が等しくない独立したグループのt検定

—

a1

関数

SUBSTR[B|2|4|C](a1,a2[,a3])

位置a2から始まる、長さa3のa1の部分文字列

a1

—

関数

SYS_CONNECT_BY_PATH(a1,a2)

列の値が文字a2で区切られた、ルートからノードまでの値a1のパス

a1

—

関数

SYS_CONTEXT(a1,a2[,a3])

ネームスペースa1からの長さa3のコンテキスト・パラメータa2

リテラル照合

—

関数

TO_CHAR(a1)

/*character*/

a1をデータ型CLOB、NCHAR、NVARCHAR2またはNCLOBからVARCHAR2に変換します

a1

—

関数

TO_CHAR(a1[,a2[,a3]])

/*datetime*/

オプションの書式a2とNLS環境a3を指定して、a1を日時データ型からVARCHAR2に変換します

リテラル照合

—

関数

TO_CHAR(a1[,a2[,a3]]) 

/*number*/

オプションの書式a2とNLS環境a3を指定して、a1を数値データ型からVARCHAR2に変換します

リテラル照合

—

関数

TO_CLOB(a1)

a1をデータ型CHAR、VARCHAR2、CLOB、NCHAR、NVARCHAR2またはNCLOBからCLOBに変換します

a1

(結果はUSING_NLS_COMPになる必要があります)

—

関数

TO_LOB(a1) 

/*long*/

a1をデータ型LONGからCLOBに変換します

a1

(結果はUSING_NLS_COMPになる必要があります)

—

関数

TO_MULTI_BYTE(a1)

a1の半角文字を全角文字にマップします

a1

—

関数

TO_NCHAR(a1) 

/*character*/

a1をデータ型NCLOB、CHAR、VARCHAR2またはCLOBからNVARCHAR2に変換します

a1

—

関数

TO_NCHAR(a1[,a2[,a3]])

/*datetime*/

オプションの書式a2とNLS環境a3を指定して、a1を日時データ型からNVARCHAR2に変換します

リテラル照合

—

関数

TO_NCHAR(a1[,a2[,a3]])

/*number*/

オプションの書式a2とNLS環境a3を指定して、a1を数値データ型からNVARCHAR2に変換します

リテラル照合

—

関数

TO_NCLOB(a1)

a1をデータ型CHAR、VARCHAR2、CLOB、NCHAR、NVARCHAR2またはNCLOBからNCLOBに変換します

a1

(結果はUSING_NLS_COMPになる必要があります)

—

関数

TO_SINGLE_BYTE(a1)

a1の全角文字を半角文字にマップします

a1

—

関数

TRANSLATE(a1,a2,a3)

a2内の文字をa3内の対応する文字にマップして、a1を変換します

a1
a1

関数

TRANSLATE(a1 USING CHAR_CS|NCHAR_CS)

a1をある文字セットから別の文字セットに変換します

(TO_CHAR| TO_NCHAR /*character*/とほぼ同じです)

a1

—

関数

TRIM([[LEADING|TRAILING|BOTH] [a1] FROM] a2)

a2の先頭または末尾(あるいはそれら両方)から、文字a1をすべて削除します

a2
a2

関数

TZ_OFFSET(a1)

タイム・ゾーンa1のオフセット

リテラル照合

—

関数

UNISTR

Unicodeエスケープを解釈して文字列a1をNVARCHAR2文字列に変換します

a1

—

関数

UPPER(a1)

文字列a1を大文字にします

a1

—

関数

USER

ログイン・ユーザー名

リテラル照合

—

関数

USERENV(a1)

USERENVコンテキスト・パラメータa1

リテラル照合

—

関数

XMLCAST(a1 AS 
<data type>)

XMLQueryの結果をデータ型にキャストします

リテラル照合

—

関数

XMLSERIALIZE(... a1 
 [AS VARCHAR2 | CLOB]...)

XML文書a1を文字列にシリアライズします

リテラル照合

—

関数

XMLTABLE(... COLUMNS 
col1 <data type> ...
coln <data type>...)

XMLオブジェクト内容を仮想リレーショナル表として表します

(生成された表内の文字データ型の各列に対する)リテラル照合

—

句

OVER(PARTITION BY a1, a2, ...an)

分析句のパーティション化

—

a1
a2
...
an

照合は、句内の各文字引数について個別に決定されます。

句

OVER(ORDER BY a1, a2, ...an)

分析句の順序付け

—

a1
a2
...
an

照合は、句内の各文字引数について個別に決定されます。

句

ORDER BY a1, a2, ...an

集計関数の順序付け

—

a1
a2
...
an

照合は、句内の各文字引数について個別に決定されます。

句

ORDER BY a1, a2, ...an

問合せ結果の順序付け

—

a1
a2
...
an

照合は、句内の各文字引数について個別に決定されます。

句

GROUP BY a1, a2, ...an

問合せ行のグループ化

—

a1
a2
...
an

照合は、句内の各文字引数について個別に決定されます。