SET DEFAULTCOLLATE
SET DEFAULTCOLLATE ステートメントは、CHAR、VARCHAR、LONGVARCHAR、NCHAR、NVARCHAR、または NLONGVARCHAR データ型のすべての列に使用する照合順序を指定します。ステートメントには次のオプションがあります。
•
•
•
•
構文
SET DEFAULTCOLLATE = <NULL | 'ソート順'>
 
ソート順 ::= ACS ファイルのパス名、ISR テーブルの名前、またはサポートされる ICU 照合順序名
備考
SET DEFAULTCOLLATE ステートメントは、便利なグローバル セッション設定を提供します。しかし、個々の列定義で COLLATE キーワードを使用すれば、その列特定の照合順序を設定できます。そうした場合、SET DEFAULTCOLLATE はその列には影響しません。
DEFAULTCOLLATE のデフォルト設定はヌルです。
ACS ファイルの使用
ソート順パラメーターとして ACS ファイルを指定した場合は、次のステートメントが適用されます。
•
•
•
•
パスは既に存在しており、ACS ファイルの名前を含んでいる必要があります。ACS ファイルは、MicroKernel エンジンで使用される形式の 265 バイト イメージです。Zen はデフォルトで、よく使われる ACS ファイル upper.alt を C:\ProgramData\Actian\Zen\samples にインストールします。カスタム ファイルを使用することもできます。カスタム ファイルの詳細については、『Zen Programmer's Guide』の「ユーザー定義 ACS」 を参照してください。
•
•
ISR テーブル名の使用
ソート順パラメーターとして ISR テーブル名を指定した場合は、次のステートメントが適用されます。
•
Zen は、本ドキュメントの「インターナショナル ソート規則」に挙げられているテーブル名をサポートしています。
•
•
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));
関連項目
ALTER TABLE
CREATE TABLE
『Advanced Operations Guide』の照合順序と並べ替えのサポート