SET DEFAULTCOLLATE
SET DEFAULTCOLLATE ステートメントは、CHAR、VARCHAR、LONGVARCHAR、NCHAR、NVARCHAR、または NLONGVARCHAR データ型のすべての列に使用する照合順序を指定します。ステートメントには次のオプションがあります。
•ヌル値。現在のコード ページの数値順をデフォルトとします
•オルタネート コレーティング シーケンス(ACS)規則を含んでいるファイルへのパス
•インターナショナル ソート規則(ISR)テーブル名
•ICU(International Components for Unicode)照合順序名
構文
SET DEFAULTCOLLATE = <NULL | 'ソート順'>
ソート順 ::= ACS ファイルのパス名、ISR テーブルの名前、またはサポートされる ICU 照合順序名
備考
SET DEFAULTCOLLATE ステートメントは、便利なグローバル セッション設定を提供します。しかし、個々の列定義で COLLATE キーワードを使用すれば、その列特定の照合順序を設定できます。そうした場合、SET DEFAULTCOLLATE はその列には影響しません。
DEFAULTCOLLATE のデフォルト設定はヌルです。
ACS ファイルの使用
ソート順パラメーターとして ACS ファイルを指定した場合は、次のステートメントが適用されます。
•呼び出し元アプリケーションではなく、データベース エンジンからアクセス可能なパスを指定する必要があります。
•パスは一重引用符で囲む必要があります。
•パスは、少なくとも 1 文字以上 255 文字以下でなければなりません。
•パスは既に存在しており、ACS ファイルの名前を含んでいる必要があります。ACS ファイルは、MicroKernel エンジンで使用される形式の 265 バイト イメージです。Zen はデフォルトで、よく使われる ACS ファイル upper.alt を C:
\ProgramData
\Actian
\Zen
\samples にインストールします。カスタム ファイルを使用することもできます。カスタム ファイルの詳細については、『
Zen Programmer's Guide』の
ユーザー定義 ACS を参照してください。
•DDF ディレクトリに対して相対的である、相対パスを使用できます。相対パスには、1 つのピリオド(現在のディレクトリ)、2 つのピリオド(親ディレクトリ)、円記号、あるいはこれら 3 つのあらゆる組み合わせを含めることができます。相対パスの円記号は、スラッシュ(/)と円記号(\)のどちらでも使用できます。同じパス内に円記号とスラッシュ文字を混在させることもできます。
•UNC(Universal Naming Convention)のパス名を使用できます。
ISR テーブル名の使用
ソート順パラメーターとして ISR テーブル名を指定した場合は、次のステートメントが適用されます。
•ISR テーブル名はファイルの名前ではなく、Zen でサポートする ISR の 1 つとして認識される文字列です。
•Zen は、ICU(International Components for Unicode)に基づいて、選択された Unicode 照合順序をサポートしています。単に、ISR テーブル名の代わりに ICU 照合順序名を使用するだけです。使用可能な照合順序は、
ICU Unicode 照合順序を使用した照合順序のサポートに記載されています。
ACS、ISR、および ICU の例
この ACS の例では、Zen で提供される upper.alt ファイルを使用して照合順序を設定します。テーブル t1 は、3 つのテキスト列と 3 つのテキスト以外の列で作成されます。SELECT ステートメントを Zen のシステム テーブルに対して実行し、t1 内の列の ID、データ型、サイズ、および属性を返します。結果は、3 つのテキスト列が UPPER 属性を持っていることを示しています。
SET DEFAULTCOLLATE = 'C:\ProgramData\Actian\Zen\samples\upper.alt'
DROP TABLE t1
CREATE TABLE t1 (c1 INT, c2 CHAR(10), c3 BINARY(10), c4 VARCHAR(10), c5 LONGVARBINARY, c6 LONGVARCHAR)
SELECT * FROM x$attrib WHERE xa$id in (SELECT xe$id FROM x$field WHERE xe$file = (SELECT xf$id FROM x$file WHERE xf$name = 't1'))
Xa$Id Xa$Type Xa$ASize Xa$Attrs
===== ======= ======== ========
327 O 265 UPPER
329 O 265 UPPER
331 O 265 UPPER
3 行が影響を受けました。
============
次の ACS の例でもテーブル t1 を引き続き使用します。ALTER TABLE ステートメントによって、テキスト列 c2 を CHAR から INTEGER に変更します。SELECT ステートメントの結果は、2 列だけがデフォルトの照合順序の影響を受けていることを示しています。
ALTER TABLE t1 ALTER c2 INT
SELECT * FROM x$attrib WHERE xa$id in (SELECT xe$id FROM x$field WHERE xe$file = (SELECT xf$id FROM x$file WHERE xf$name = 't1'))
Xa$Id Xa$Type Xa$ASize Xa$Attrs
===== ======= ======== ========
329 O 265 UPPER
331 O 265 UPPER
2 行が影響を受けました。
============
次の ACS の例では、ALTER TABLE ステートメントを使用して、テーブル t1 の列 c1 を INTEGER から CHAR に変更します。SELECT ステートメントの結果は、3 列がデフォルトの照合順序の影響を受けていることを示しています。
ALTER TABLE t1 ALTER c1 CHAR(10)
SELECT * FROM x$attrib WHERE xa$id in (SELECT xe$id FROM x$field WHERE xe$file = (SELECT xf$id FROM x$file WHERE xf$name = 't1'))
Xa$Id Xa$Type Xa$ASize Xa$Attrs
===== ======= ======== ========
326 O 265 UPPER
329 O 265 UPPER
331 O 265 UPPER
3 行が影響を受けました。
============
次の ISR の例では、VARCHAR 列を持つテーブルを作成し、デフォルトの Windows エンコード CP1252 であるとして、ISR 照合順序 MSFT_ENUS01252_0 を使用します。
create table isrtest (ord INT, value VARCHAR(19) COLLATE 'MSFT_ENUS01252_0' not null, primary key(value));
次の ICU の例では、VARCHAR 列を持つテーブルを作成し、デフォルトの Linux エンコード UTF-8 であるとして、ICU 照合順序 u54-msft_enus_0 を使用します。
create table isrtest (ord INT, value VARCHAR(19) COLLATE 'u54-msft_enus_0' not null, primary key(value));
次の ICU の例は、NVARCHAR 列を持ち、ICU 照合順序 u54-msft_enus_0 を使用するテーブルを作成します。
create table isrtest (ord INT, value NVARCHAR(19) COLLATE 'u54-msft_enus_0' not null, primary key(value));
関連項目
『
Advanced Operations Guide』の
照合順序と並べ替えのサポート