SQL 構文リファレンス : SET DEFAULTCOLLATE
 
このページをシェアする                  
SET DEFAULTCOLLATE
SET DEFAULTCOLLATE ステートメントは、CHAR、VARCHAR または LONGVARCHAR データ型の列すべてに使用する照合順序ファイルを指定できます。
構文
SET DEFAULTCOLLATE = <NULL | 'acsパス'>
 
acsパス ::= 照合順序規則が明記されているファイルの場所
備考
SET DEFAULTCOLLATE ステートメントは、多数の列定義の照合順序を個別で設定するより、もっと便利なセッションの設定方法を提供します。
選択すれば、個々の列定義で照合順序を指定することもできます。列定義の一部として COLLATE キーワードを使用すると、その特定の列の SET DEFAULTCOLLATE 設定は無効になります。ALTER TABLE および CREATE TABLE の列定義を参照してください。
SET DEFAULTCOLLATE の "NULL" パラメーターによって、セッションはオルタネート コレーティング シーケンス(ACS)ファイルを使用しなくなります。個別に COLLATE が定義されている列を除き、どのテキスト列にも照合順序は適用されません。ACS ファイルは、MicroKernel エンジンの ACS で使用される形式と同じ 265 バイト イメージです。『PSQL Programmer's Guide』のユーザー定義 ACS を参照してください。
DEFAULTCOLLATE のデフォルトのセッション設定はヌルです。
以下の要件が acsパス パラメーターに適用されます。
パラメーターには、呼び出し元アプリケーションの場所からではなく、データベース エンジンの場所と比較した場合に有効なパスを指定する必要があります(つまり、呼び出し元アプリケーションの分析視点ではなく、データベース エンジンの視点から、ということです)。
パスのディレクトリ構造は存在している必要があります(SET DEFAULTCOLLATE でパスの作成は行いません)。
パスにファイル名を含める必要があります。ファイルによって照合順序規則を特定します(たとえば、upper.alt など。このファイルは PSQL で提供されます)。
パスは一重引用符で囲む必要があります。
パスは最低でも 1 文字はなければならず、255 文字を超えてはいけません。
DDF が存在するディレクトリに対して相対的である、相対パスを使用できます。相対パスには、1 つのピリオド(現在のディレクトリ)、2 つのピリオド(親ディレクトリ)、円記号、あるいはこれら 3 つのあらゆる組み合わせを含めることができます。相対パスの円記号は、スラッシュ(/)と円記号(\)のどちらでも使用できます。必要であれば、2 種類の記号を混在させて使用することもできます。
UNC(Universal Naming Convention)のパス名を使用できます。
PSQL ファイルのデフォルトの保存場所については、『Getting Started With PSQL』の PSQL ファイルはどこにインストールされますか?を参照してください。
次の例では、PSQL で提供される upper.alt ファイルを使用して、デフォルトの照合順序を設定します。テーブル t1 は、3 つのテキスト列と 3 つのテキスト以外の列で作成されます。SELECT ステートメントを PSQL のシステム テーブルに対して実行し、t1 内の列の ID、データ型、サイズ、および属性を返します。結果は、3 つのテキスト列が "UPPER" 属性を持っていることを示しています。
SET DEFAULTCOLLATE = 'file_path\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 行が影響を受けました。
============ 
次の例でもテーブル 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 行が影響を受けました。
============ 
次の例では、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 行が影響を受けました。
関連項目
ALTER TABLE
CREATE TABLE