为SQL Server正确编写了以下请求,但对Oracle没有。
SELECT col1 AS 'col1_new_title',
col2 AS 'col2_new_title',
col3
FROM table
对于Oracle,它需要是一个等号,前面有新名称。
有没有办法编写该请求,以便它可以在两个环境中执行,而不必每次都重写它?
答案 0 :(得分:1)
您的声明在Oracle中不起作用的原因是由单引号引起的。在SQL标识符中,如果您希望它们区分大小写,则需要用双引号括起来。单引号用于字符串常量。
以下
SELECT col1 AS "col1_new_title",
col2 AS "col2_new_title",
col3
FROM table
应该适用于两个系统(实际上在符合SQL标准规范标准的任何 DBMS上)
对于SQL Server,这需要将配置选项“ANSI_QUOTES”(或类似的我不记得的确切名称)设置为ON
- 我认为这是任何最新SQL Server版本中的默认设置。
如果您不关心UPPER /小写标识符,则根本不要使用任何引号:
SELECT col1 AS col1_new_title,
col2 AS col2_new_title,
col3
FROM table
答案 1 :(得分:0)
SELECT
col1 col1_new_title
, col2 col2_new_title
, col3
FROM table
如果你没有空格并且避免使用保留字,那么上面的准系统方法将适用于大多数SQL方言。
注意oracle不需要as
,实际上在某些情况下不接受它,例如表别名。
如果这种裸方法不起作用,请在列别名中添加双引号。