sql - SQL查询中转义关键字的通用方法是什么?

标签 sql jdbc

如果我的查询是

SELECT from FROM myTable;

如何转义列名“from”。

我需要一种适用于Oracle、MySQL、Teradata和所有其他系统的方法

SELECT myTable.from FROM mytable; 

适用于所有系统吗?

最佳答案

SQL标准非常明确:保留关键字只有用双引号括起来时才能使用:

select "FROM" from mytable;

请注意,带引号的标识符也区分大小写“Foo”“FOO” 是两个不同的名称! (而 FooFOO 在标准 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/

相关文章:

sql - 如何用 SQLite 模拟 LPAD/RPAD

mysql - 如何将 'if clause' 放入 SQL 字符串中?

php - 如果不需要进行查询,冗余数据是否可以?

java - 使用 postgres 独立启动 jackrabbit

java - 确保*所有*代码路径返回有效的 JDBC 连接或抛出异常(禁止 "null")

java - 在 java 中使用 jtds 时找不到类错误

SQL 按时间条件分组累计求和

mysql - SQL 无法更新几行

java.sql.SQLException : No suitable driver found for jdbc:hive://localhost:10000/default 异常

java - JDBC 连接持久性问题