如果我的查询是
SELECT from FROM myTable;
如何转义列名“from”。
我需要一种适用于Oracle、MySQL、Teradata和所有其他系统的方法
会
SELECT myTable.from FROM mytable;
适用于所有系统吗?
最佳答案
SQL标准非常明确:保留关键字只有用双引号括起来时才能使用:
select "FROM" from mytable;
请注意,带引号的标识符也区分大小写。 “Foo”
和 “FOO”
是两个不同的名称! (而 Foo
和 FOO
在标准 SQL 和大多数 DBMS 中是相同的名称)
I need a way which is applicable to Oracle, MySQL, Teradata and all other systems
Postgres、Oracle、DB2 (LUW)、Firebird、Ingres、HSQLDB、H2、Vertica、HANA 和 Teradata 均符合开箱即用的标准。
需要通过将 sql-mode
设置为 ANSI
或至少 ANSI_QUOTES
来说服 MySQL 遵守标准。
对于 SQL Server,选项 QUOTED_IDENTIFIER
需要设置为 on
。
对于 Informix,通过 JDBC 连接时需要将 DELIMIDENT
设置为 y
但一般来说,您应该确实避免使用带引号的标识符。通常,这样做迟早会遇到麻烦。
关于sql - SQL查询中转义关键字的通用方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44661372/