10

有没有办法在 Oracle SQL 查询中引用包含空格的别名?我还没有在任何地方找到它。通常我不使用空格来命名数据库元素,所以这对我来说是一个新的领域。

这是一个示例查询:

SELECT  t.id AS "Ticket ID",
(SELECT w.workgroup_title FROM workgroups w
WHERE w.operator_id = t.operator_id AND ROWNUM < 2) AS "Workgroup Title"
FROM tickets t

在以后的比较操作中如何使用“工单 ID”或“工作组标题”?例如:

"工单 ID" == 9 或 "工作组标题" == '工作组 #1'

我猜有一个简单的方法可以做到这一点,只是还没有找到。

谢谢!

PS这是交给我的一件旧作品。SQL 中的别名与其他各种代码动态关联,并且都有空格。因此,移除这些空间并不是一件简单的事情,而且我目前还没有为它安排时间。否则,这就是我会做的。

编辑澄清
使用上面的例子,我将如何做这样的事情,其中​​“工作组标题”总是指代别名:

SELECT  t.id AS "Ticket ID",
(SELECT w.workgroup_title FROM workgroups w
WHERE w.operator_id = t.operator_id AND ROWNUM < 2) AS "Workgroup Title",
(SELECT s.support_tier_id FROM support_tiers s
WHERE s.workgroup_title == "Workgroup Title") AS "Support Tier ID"
FROM tickets t
4

1 回答 1

12

是的,您可以这样做,但您必须用双引号将这些名称括起来:

-- SQL Example
SELECT "Just one" FROM (
  SELECT 1 AS "Just one" FROM dual
);

输出:

  只有一个
----------
         1
-- PL/SQL Example
BEGIN
  FOR v_rec IN (SELECT 1 AS "Just one" FROM dual)
  LOOP
    dbms_output.put_line(v_rec."Just one");
  END LOOP;
END;
/

输出:

1

还有一点好奇:

BEGIN
  FOR v_rec IN (SELECT COUNT(1) * 10 FROM dual)
  LOOP
    dbms_output.put_line(v_rec."COUNT(1)*10");
  END LOOP;
END;

这有效..并打印:

10

编辑

您可以在查询的其他地方引用别名列,例如:

SELECT 'It is just one' FROM (
  SELECT "Just one" FROM (
    SELECT 1 AS "Just one" FROM dual
  ) t
WHERE t."Just one" = 1 -- prefixing with t. is not necessary in this particular example
);

输出:

这只是一个
于 2013-11-13T00:23:26.337 回答