我有这样的查询。我想用列名“A。
过滤select 'DummyValue1' as ColumnNameA
from TableT.
现在我想应用像
这样的过滤器select 'DummyValue1' as ColumnNameA
from TableT
where ColumnNameA = "Value1" .
如何在Oracle中执行此操作。
请注意这里'DummyValue1',因为ColumnNameA实际上不是数据库列。我只是在我的结果集中创建。
答案 0 :(得分:3)
由于查询处理顺序,您无法在WHERE
子句中使用别名。但你可以使用外部选择或CTE来做类似的事情
SELECT t.*
FROM
(
SELECT 'DummyValue1' as ColumnNameA, ...
FROM TableT
) t
WHERE ColumnNameA = 'Value1'
这是 SQLFiddle 演示
答案 1 :(得分:2)
查询的结构保持不变,只有查询的WHERE
子句中的字符串文字需要用单引号括起来,因为用双引号括起来的Oracle中的字符串文字将被考虑作为标识符:
select 'DummyValue1' as ColumnNameA
from TableT
where ColumnNameA = 'Value1'
答案 2 :(得分:0)
如果我理解正确,这应该有效:
SELECT ColumnNameA as 'DummyValue1'
FROM TableT
WHERE ColumnNameA = 'Value1'