我的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
答案 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
列