【问题标题】:ORACLE SQL "print"-keyword as column nameORACLE SQL“打印”-关键字作为列名
【发布时间】:2023-03-28 01:39:01
【问题描述】:

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

'TRUE' AS "PRINT"

该列应覆盖包含在中的“PRINT”列的原始内容

select *

不幸的是,“PRINT”被识别为关键字(由 Oracle 或我的 DBMS),因此在结果输出表中有原始的“PRINT”列,它仍然是“FALSE”,以及一个名为“ PRINT_1" 是选定的常量 'TRUE'。

如您所见,我已经使用“as”和双引号来尝试转义关键字,但不知何故它并没有像我想象的那样工作。那我该怎么做呢?

按要求查询:

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

【问题讨论】:

  • 请粘贴您的查询
  • 表H中有哪些列? H.* 还发生了其他事情,因为如果我执行“select 'TRUE' as”PRINT from dual”,它会正确显示。还完整地显示查询的输出。

标签: sql oracle overriding naming


【解决方案1】:

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

换句话说

SELECT h.col1, h.col2, h.col3, ... h.colN,
       'TRUE' as print
  FROM table_name h

其中col1 - colN 省略了PRINT

【讨论】:

  • 就是这样。我不尝试它的原因是我不想手动添加此表中几乎无限数量的列。现在就这样做了,效果很好。
猜你喜欢
  • 2015-02-03
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
  • 2016-11-09
  • 1970-01-01
  • 2016-06-16
相关资源
最近更新 更多