如果我的查询是在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"
是两个不同的名字! (而Foo
和FOO
是标准的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需要设置DELIMIDENT
到y
通过JDBC
连接时,但一般而言,您应真的避免需要使用带引号的标识符。通常情况下,您迟早会遇到麻烦。
没有“通用”方法(虽然有ANSI标准方法)。只是不要使用关键字的列名,你不会有问题。 –