SQL 解説書

ストリング変換に関する規則

演算の実行に使用されるコード・ページは、 その演算のオペランドに適用される規則によって決定されます。 ここでは、そのような規則について説明します。

これらの規則は以下に適用されます。

それぞれの場合で結果コード・ページはバインド実行時に決定されます。演算の実行時に、 ストリングがそのコード・ページで識別されるコード・ページに変換されることがあります。 有効な変換がなされていない文字は、置換文字にマップされ、 文字セットと SQLWARN10 が SQLCA で 'W' に設定されます。

結果コード・ページは、オペランドのコード・ページによって決定されます。 初めの 2 つのオペランドのコード・ページが中間結果コード・ページを決定し、 (該当する場合には) そのコード・ページと次のオペランドのコード・ページが新たな中間結果コード・ページを決定します。 以下、同様になります。 最後の中間結果コード・ページと最後のオペランドのコード・ページが、 最終結果のストリングまたは列のコード・ページを決定します。 コード・ページのそれぞれの対では、 以下の規則を順次適用することにより結果が決定されます。

中間結果は、派生値オペランドとみなされます。 単一の列値、定数、特殊レジスター、またはホスト変数以外の式も、 派生値オペランドであるとみなされます。 式が CAST 指定の場合 (またはそれに相当する関数への呼び出しの場合) は、 この規則に例外があります。 この場合、第 1 オペランドの種別 は、 CAST 指定の第 1 引き数に基づいて決められます。

視点の列は、その最初の源となっているオブジェクトのオペランド・タイプをもつとみなされます。 たとえば、表列に基づいて定義された視点列は列値とみなされますが、 ストリング式 (A CONCAT B など) に基づく視点列は派生値とみなされます。

以下については、必要なら結果のコード・ページへの変換が行われます。

文字変換は、次の条件のすべてに該当する場合に必要になります。

例 1: 以下の条件がある場合は、次のようになります。
タイプ コード・ページ
COL_1 850
HV_2 ホスト変数 437

ここで、以下の述部を評価すると、

  COL_1 CONCAT :HV_2

優先されるオペランドは COL_1 列であるため、 2 つのオペランドの結果コード・ページは 850 になります。

例 2: 上記の例からの情報を使用して、 述部を評価すると、

  COALESCE(COL_1, :HV_2:NULLIND,)

結果のコード・ページは 850 になります。 したがって、スカラー関数 COALESCE の結果のコード・ページは、 コード・ページ 850 になります。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]