gpt4 book ai didi

sql - Oracle:如何在比较操作中从子查询中引用带有空格的别名

转载 作者:行者123 更新时间:2023-12-02 12:11:05 25 4
gpt4 key购买 nike

有没有办法在 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 中的别名动态地绑定(bind)到其他各种代码中,并且都带有空格。因此,删除空格并不是一件简单的事情,而且我目前还没有为此安排时间。否则的话,我也会这么做。

编辑以供澄清
使用上面的示例,我将如何执行类似的操作,其中“工作组标题”始终引用别名:

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

最佳答案

是的,您可以执行此操作,但必须将这些名称括在双引号中:

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

输出:

  Just one----------         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

And a little curiosity:

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

Edit

You can reference the aliased column elsewhere in your query, for example:

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
);

输出:

It is just one

关于sql - Oracle:如何在比较操作中从子查询中引用带有空格的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19942767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com