データ操作言語の効果
nchar 型と nvarchar 型の文字セットの使用は、順序付け、ソート、比較、結合、集約に影響を与えます。
- ORDER BY と GROUP BY
文字照合 (collation) はバイナリーです。
- 比較
すべての比較 (結合、フィルタリング、一般式、グループ化と集約に伴う暗黙的な比較など) は、バイナリー照合で実行されます。
- JOIN
Join 比較ではバイナリー照合が使われます。
- 集計
文字型の列の min、max、distinct 集約は、バイナリー照合で実行できます。
- キャスト
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_char、to_date、upper、lower といった標準のストリング操作関数を使用できます。 これらの機能の詳細については、表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 列では疑問符に置換されます。