2016-06-22 5 views
0

テーブル名、カラム名、またはデータ型の大括弧はpostgresqlではサポートされていませんか?テーブル/列名の角括弧はサポートされていませんか?

pgAdminで、クエリを実行している間、私はエラーの下に取得しています:

CREATE TABLE [Test]; 

ERROR: syntax error at or near "[" 

SQL状態:PostgreSQLで42601

+0

それはSQL(クエリ言語)には有効ではありませんし、PostgresがSQL標準を尊重するので、それは、「Postgresの」でサポートされていません:https://www.postgresql.org/docs/current/static/sql- syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS –

+0

@a_horse_with_no_nameなぜ、postgreSQLでサポートされていないと思いますか?それはサポートされています。あなたはテーブル "[テスト]"を作成しようとすることができます...;たぶん、名前の括弧の使用はサポートされていません(SQL Serverでは一般的です)。 –

+0

@CetinBasoz: '' 'を使用すると、識別子として_anything_を使用することができますが、引用符' [''は識別子には不正です.SheshaはSQL Server/T-SQLバックグラウンドから来ると仮定します。 。] '引用符で囲まれた識別子の代わりとして。 –

答えて

2

をあなたは二重引用符を使用することができます:カラムに

CREATE TABLE "Test"; 

同じことを、角括弧はSQL Serverで使用されます。

1

角括弧を使用して識別子の名前を強調する場合は、sagi's answerが正しいです。一方、テーブル名に角括弧を実際に使用したい場合、postgresqlはこれを "[Test]"としてサポートしています。この場合、テーブル名に角括弧が含まれます。追加情報を得ることができますpostgresql documentation

2

テーブル名が括弧で囲まれた[Test]であれば "[Test]"を使用します。

Create table "[Test]" ...; 

識別子として使用する場合は、大括弧または二重引用符を使用しないでください。

Create table Test ...; 

この方法で、あなたは後続の問合せ、すなわち内の二重引用符なしのテストまたはテストやテストとしてそれを参照することができます:

select * from test; 

あなたが「テスト」を使用した場合、PostgreSQLはケースとして扱いますあなたは常に "テスト"を使用します。

Create table "Test" ...; 
関連する問題