2017-06-20 16 views
1

私のクエリは、私は「から」カラム名をエスケープするにはどうすればよいSQLクエリでキーワードをエスケープする普遍的な方法は何ですか?

SELECT from FROM myTable; 

ある場合。

は、私には、Oracle、MySQLの、Teradataの、すべてのシステム上の他のすべてのシステム

ウィル

SELECT myTable.from FROM mytable; 

仕事に適用した方法がありますか?

+4

(「ANSI標準の方法がありますが」)「普遍的な」方法はありません。キーワードである列名は使用しないでください。問題はありません。 –

答えて

0

ユニバーサルメソッド???どのような二重引用符についてもわからない""はANSI標準であり、それ以外のRDBMSには特定の方法があります。さらに、テーブル名や列名に予約語やキーワードを使用することを控える場合は、このような普遍的な方法は必要ありません。

3

SQL標準は非常に明確です。彼らは二重引用符で囲まれています:引用符で囲まれた識別子こと

select "FROM" from mytable; 

も注意してください場合敏感です。 "Foo""FOO"は2つの異なる名前です!私は、Oracle、MySQLの、Teradataの他のすべてのシステムにも適用可能である方法が必要です


FooFOO一方、標準SQLとほとんどのDBMSで同じ名前がある)

Postgres、Oracle、DB2(LUW)、Firebird、Ingres、HSQLDB、H2、Vertica、HANA、およびTeradataは、標準の標準に準拠しています。

MySQLは、sql-modeANSIまたは少なくともANSI_QUOTESに設定して、標準を遵守するように納得する必要があります。

SQLサーバーの場合、QUOTED_IDENTIFIERオプションはonに設定する必要があります。 Informix用

あなたはJDBC


を介して接続するときyDELIMIDENTを設定する必要があります。しかし、一般的に、あなたは本当に引用符で囲まれた識別子を使用する必要性を避けるべきです。通常、それを行うことで、遅かれ早かれ問題になるでしょう。

関連する問題