私のクエリは、私は「から」カラム名をエスケープするにはどうすればよいSQLクエリでキーワードをエスケープする普遍的な方法は何ですか?
SELECT from FROM myTable;
ある場合。
は、私には、Oracle、MySQLの、Teradataの、すべてのシステム上の他のすべてのシステム
ウィル
SELECT myTable.from FROM mytable;
仕事に適用した方法がありますか?
私のクエリは、私は「から」カラム名をエスケープするにはどうすればよいSQLクエリでキーワードをエスケープする普遍的な方法は何ですか?
SELECT from FROM myTable;
ある場合。
は、私には、Oracle、MySQLの、Teradataの、すべてのシステム上の他のすべてのシステム
ウィル
SELECT myTable.from FROM mytable;
仕事に適用した方法がありますか?
ユニバーサルメソッド???どのような二重引用符についてもわからない""
はANSI標準であり、それ以外のRDBMSには特定の方法があります。さらに、テーブル名や列名に予約語やキーワードを使用することを控える場合は、このような普遍的な方法は必要ありません。
SQL標準は非常に明確です。彼らは二重引用符で囲まれています:引用符で囲まれた識別子こと
select "FROM" from mytable;
も注意してください場合敏感です。 "Foo"
と"FOO"
は2つの異なる名前です!私は、Oracle、MySQLの、Teradataの他のすべてのシステムにも適用可能である方法が必要です
(
Foo
とFOO
一方、標準SQLとほとんどのDBMSで同じ名前がある)
Postgres、Oracle、DB2(LUW)、Firebird、Ingres、HSQLDB、H2、Vertica、HANA、およびTeradataは、標準の標準に準拠しています。
MySQLは、sql-mode
をANSI
または少なくともANSI_QUOTES
に設定して、標準を遵守するように納得する必要があります。
SQLサーバーの場合、QUOTED_IDENTIFIER
オプションはon
に設定する必要があります。 Informix用
あなたはJDBC
を介して接続するときy
にDELIMIDENT
を設定する必要があります。しかし、一般的に、あなたは本当に引用符で囲まれた識別子を使用する必要性を避けるべきです。通常、それを行うことで、遅かれ早かれ問題になるでしょう。
(「ANSI標準の方法がありますが」)「普遍的な」方法はありません。キーワードである列名は使用しないでください。問題はありません。 –