Table of ContentsPreviousNext

Ispirer             Ispirer


Ispirer SQLWays データベース移行ソフトウェア

区切り識別子

区切り識別子とは、通常の識別子のルールに従う必要のない識別子です。区切り識別子は、そのデータベースでそこに使用できないとされる文字以外の任意の印字可能文字列で表されます。通常、区切り識別子はSQLの予約語を識別子として使いたい場合に用いられます。

区切り識別子の使用ルールが以下のテーブルに示されています

TABLE 16. 区切り識別子
Database
区切り識別子の使用ルール
Oracle
Oracleでは区切り識別子は二重引用符で囲まれた印字可能文字列です。二重引用符の使用と二重引用符を除外して30文字を超える文字列は使用できません。SQL予約語の使用は可能です。
例:
SELECT book_id, "TYPE", author INTO...
標準の識別子とは異なり、Oracleの区切り識別子は大文字小文字を区別します。そのため、"TYPE" と名づけたカラム(例の通り)を"Type" または "type"という名前で参照することはできません。
IBM DB2
Unix, Windows
IBM DB2では、区切り識別子は二重引用符で囲まれた文字列です。もし区切り識別子で二重引用符を使いたい場合は二重引用符をスペースを空けずに2つ連続して記述します。
例えば、もしテーブルのカラム名が"Last "Name""である場合、そのカラムを参照するにはこのようにタイプしなければなりません
"Last ""Name"""
SQL予約語の使用は可能です。標準の識別子と異なり、IBM DB2の区切り識別子は大文字小文字を区別します。
OS/390
IBM DB2 for OS/390では、区切り識別子はエスケープ文字で囲まれた文字列です。通常エスケープ文字は二重引用符 (")です。文字列の区切り文字が二重引用府に設定されている場合、エスケープ文字はアポストロフィ (')です。 SQL予約語の使用は可能です。
もしエスケープ文字を区切り識別子の中で使用したい場合には、エスケープ文字をスペースを空けずに2つ連続して記述します。
区切り識別子の中にダブルバイト文字がある場合にはシフト文字の使用が必要です。
AS/400
IBM DB2 for AS/400では、区切り識別子はエスケープ文字で囲まれた文字列です。カラム名の場合のみ2つのエスケープ文字が識別子の長さに含まれます。通常エスケープ文字は二重引用符 (")です。文字列の区切り文字が二重引用府に設定されている場合、エスケープ文字はアポストロフィ (')です。SQL予約語を使用する場合には大文字で記述しなければなりません。
以下の文字は区切り識別子に使用できません
X'00' through X'3F' および X'FF'
Microsoft SQL Server
Microsoft SQL Serverでは、区切り識別子はデフォルトでは二重引用符(")で囲まれた文字列です。 もし quoted_identifier オプションをoffに設定すると、角カッコ ([]) が識別子の引用符として使用され、二重引用符を区切り識別子の文字として使用することができます。SQL予約語の使用は可能です。
区切り識別子の長さは128文字を超えてはなりません(引用符を含まず)。識別子本体は現在のコードページの任意の文字の組み合わせが可能です。但し区切り文字自身は使用できません。
Sybase
ASE
Sybase Adaptive Server Enterpriseでは、区切り識別子は二重引用符で囲まれた28文字までの識別子であり、テーブル、ビュー、カラム名に使用できます。他のデータベースオブジェクトには使用できません。区切り識別子は通常の識別子では使えない、予約語、数字や非英字から始まる識別子を使用するために用いられます。区切り識別子の参照または作成前に以下を実行します
set quoted_identifier on
quoted_identifier オプションがonに設定されている間は 文字やデータストリングを二重引用符で囲むことはできなくなります。
ASA
ASEと同様です。Adaptive Server Anywhereが異なる点は、 quoted_identifier オプションが on がデフォルト設定であり、区切り識別子の最大長は126文字です。
MySQL
3.23.6 以前
非サポート
3.23.6 およびそれ以降
MySQLでは、区切り識別子はデフォルトではバッククォート(`) で囲まれた識別子です。MySQLがANSI 二重引用符 (" ) を使っている場合でも区切り識別子をサポートしています。 区切り識別子はASCII(0)ASCII(255) または引用符文字を含むことはできません。もし予約語や特殊文字を使用する場合にはバッククォートで囲まなければなりません。
例:
SELECT * FROM `types` WHERE `types`.id < 10;
Pervasive.SQL
Pervasive.SQLでは、区切り識別子は二重引用符で囲まれた任意の文字の組み合わせであり、予約語を使用することができます。もし二重引用符を使用したい場合にはスペースを空けずに2つの二重引用符を記述します。
長さは通常の識別子と同じですが2つの二重引用符を含みます。
例:
Column_name123456789 - (通常の識別子、20 文字)
"Column_name1234567" - (区切り識別子、 20 文字)


Table of ContentsPreviousNext
Ispirer             Ispirer
Copyright © 1999-2015 Ispirer Systems Ltd. Ispirer and SQLWays are trademarks of Ispirer Systems Ltd. All other product names may be trademarks of the respective companies. All rights reserved.