【问题标题】:Oracle - How to select and alias column by column-position, not column-nameOracle - 如何按列位置而不是列名选择和别名列
【发布时间】:2022-11-12 16:35:45
【问题描述】:

Oracle - 如何按列位置而不是列名选择和重新命名列? 经验值:

SELECT $1 AS NEW_COL_1, $2 AS NEW_COL_2
FROM 
       (SELECT 'x' AS COL_1, 'y' AS COL_2 FROM DUAL)

$1, $2 表示 col_1, col_2

我试过谷歌但还没有解决方案!

【问题讨论】:

  • 你不能。 SQL 不支持该语法。
  • 如果您预先知道列名,那么您可以在生成此查询的代码的帮助下生成新的列别名。您也可以使用 with tbl_renamed(col1_new, col2_new) as (select col1, col2 from tab) select * from tbl_renamed,但它没有多大意义,因为您必须指定 with 中的所有列。 db<>fiddle

标签: sql oracle


【解决方案1】:

你不能。 SQL 不支持该语法。

【讨论】:

  • 那么,还有另一种解决方案吗?
  • @NgocTrung SQL 不支持的另一种替代方法?不,它不受支持,所以你不能这样做。也许如果您解释了为什么要这样做,那么我们可以理解并提供一种替代方法,但是不可能按位置访问用户定义的列。
【解决方案2】:

我有这样的解决方案,但它需要知道列数:

SELECT * FROM (
  SELECT NULL NEW_COL1, NULL NEW_COL2
  UNION ALL 
  SELECT 'x' AS COL_1, 'y' AS COL_2 FROM DUAL
) 
WHERE NEW_COL1 IS NOT NULL;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多