データ操作言語の効果

nchar 型と nvarchar 型の文字セットの使用は、順序付け、ソート、比較、結合、集約に影響を与えます。

  • ORDER BY と GROUP BY

    文字照合 (collation) はバイナリーです。

  • 比較

    すべての比較 (結合、フィルタリング、一般式、グループ化と集約に伴う暗黙的な比較など) は、バイナリー照合で実行されます。

  • JOIN

    Join 比較ではバイナリー照合が使われます。

  • 集計

    文字型の列の minmaxdistinct 集約は、バイナリー照合で実行できます。

  • キャスト

    char 型と nchar 型間のキャストが可能です。 char 型で表される文字はすべて nchar 型でも表すことができ、char 型から nchar 型へのキャストはロスレスとなっています。 例えば、cast (<char-col> as nchar(10)) などです。 nchar 型から char 型へのキャストの場合、nchar がすべての Unicode を格納し、char が Latin-9 を格納することから、char 列で表示されない文字が出てくる場合があります。 Latin-9 表記を持たない文字はクエスチョン・マークに変換されます。

  • SQL パターン・マッチ

    nchar クラスのデータに対して標準の like 述語パターン・マッチを実行できます。

  • char と nchar の混合

    char 列と nchar 列を結合できます。

  • nchar データの場合のストリング関数

    to_charto_dateupperlower といった標準のストリング操作関数を使用できます。 これらの機能の詳細については、表1および表1を参照のこと。

    注:'upperや 'lowerなどの文字列変換関数は、Unicode Organization の 'SpecialCasing規則を使わず、代わりに 'UnicodeData.txt の規則を使います。 SpecialCasing ルールの場合、ストリング長の変更など、望ましくない結果が生じるケースがあります。

(var)char 列と n(var)char 列の文字は、比較と結合ができます。 Netezza Performance Serverは必要なエンコーディング変換を行います。 そのため、例えば char 列の À と nchar 列の À を比較すると、異なるエンコード方式であっても、等しいと見なされます。 同様に、char 列のデータを nchar 列に挿入できます。 逆も真ですが、Unicode では非常に多数の文字を表現できるのに対し、Latin-9 で表現できるのは約 200 文字のみであるため、nchar 列に入っている文字の多くを char 列では表現できません。 これらの文字は char 列では疑問符に置換されます。