ORACLE SQL“print”-keyword作为列名

时间:2014-01-30 19:35:05

标签: sql oracle override naming

我的Oracle SQL查询有问题。它需要命名“PRINT”列以覆盖通过选择“*”选择的值。

'TRUE' AS "PRINT"

该列应覆盖

中包含的“PRINT”列的oririnal内容
select *

不幸的是,“PRINT”被识别为关键字(由Oracle或我的DBMS),因此在生成的输出表中有原始的“PRINT”列,它仍然是“FALSE”,并且新列名为“ PRINT_1“这是选定的常量'TRUE'。

正如你所看到的,我已经使用了“as”和双引号来试图逃避关键字,但不知何故它没有像我想象的那样工作。那我该怎么做呢?

根据要求提问:

SELECT H.*
, 'TRUE' as "PRINT"
FROM TABLE H

1 个答案:

答案 0 :(得分:3)

问题与print是关键字无关(顺便说一下,它不是SQL * Plus命令)。问题是,在投影中添加一个额外的列(SELECT列表中的列集)将永远不会“覆盖”投影中的另一列,即使您尝试将它们命名为相同。如果要强制PRINT的值为'TRUE',则需要明确列出所需的列(PRINT除外),然后添加计算的{{1}列。

换句话说

PRINT

其中SELECT h.col1, h.col2, h.col3, ... h.colN, 'TRUE' as print FROM table_name h - col1省略了colN