63

簡単な質問ですが、PostgreSQLで二重引用符を省略する方法はありますか?

これが例です。を与えるselect * from A;と、を取得します。実際の結果を得るには、ERROR: relation "a" does not existを与える必要があります。select * from "A";

PostgreSQLで2番目を実行せず、代わりに1番目を実行する方法はありますか?

4

5 に答える 5

90

このクエリの問題は、テーブルを作成したときに始まりました。テーブルを作成するときは、引用符を使用しないでください。

これを使って:

CREATE TABLE a ( ... );

これではない:

CREATE TABLE "A" ( ... );

後者は、常に後で引用する必要があるようにします。前者はそれを通常の名前にし、SELECT * FROM a;またはを使用できますSELECT * FROM A;

テーブルを再作成できない場合は、次のALTER TABLE構文を使用します。

ALTER TABLE "A" RENAME TO a;
于 2011-06-13T14:17:52.227 に答える
43

postgres のテーブル名に大文字を含める場合は、二重引用符が必要です

要件を回避するには、テーブルに「a」という名前を付けます

于 2011-06-13T14:08:36.767 に答える
35

Postgresql には、引用符と大文字と小文字の区別に関していくつかの特定の動作があります。引用符で囲まれていないすべての識別子を (作成時にも) 小文字に変換し、大文字と小文字を区別して動作します。

識別子の二重引用符は、識別子 (テーブル名、列名など) が (スキーマの作成時に) 大文字 (一部またはすべて) で定義され、二重引用符で囲まれている場合にのみ必要です。

その場合 (私はお勧めしません)、その識別子を使用するときは、同じ方法で入力する必要があります: 大文字と小文字を区別して (定義どおりに大文字/小文字を入力します)、二重引用符で囲みます。

それ以外の場合は、引用符で囲まれていない識別子を使用して、常に大文字と小文字を区別せずに作業できます。

于 2011-06-13T14:16:20.260 に答える
10

テーブル名または列名に大文字を使用しないでください。そのようなものを使用している場合、postgres はそれにアクセスするために二重引用符を必要とします。

于 2016-01-21T11:51:34.377 に答える