2017-06-20 114 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"是两个不同的名字! (而FooFOO是标准的SQL和大多数DBMS相同的名称)


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

Postgres,Oracle,DB2(LUW),Firebird,Ingres,HSQLDB,H2,Vertica,HANA和Teradata都符合标准。

MySQL需要确信通过将sql-mode设置为ANSI或至少ANSI_QUOTES来遵守该标准。

对于SQL Server QUOTED_IDENTIFIER需要设置到on的选项。

对于Informix需要设置DELIMIDENTy通过JDBC


连接时,但一般而言,您应真的避免需要使用带引号的标识符。通常情况下,您迟早会遇到麻烦。

相关问题