3

我有一个这样的查询。我想用列名“A.

select 'DummyValue1' as ColumnNameA 
  from TableT. 

现在我想应用过滤器

select 'DummyValue1' as ColumnNameA 
  from TableT 
 where ColumnNameA  = "Value1" .

我如何在 Oracle 中做到这一点。

请注意此处的“DummyValue1”,因为 ColumnNameA 实际上不是数据库列。我只是在我的结果集中创建。

4

3 回答 3

4

WHERE由于查询处理顺序,您不能在子句中使用别名。但是你可以使用外部选择或 CTE 来做类似的事情

SELECT t.*
  FROM
(
  SELECT 'DummyValue1' as ColumnNameA, ... 
    FROM TableT 
) t
 WHERE ColumnNameA = 'Value1'

这是SQLFiddle演示

于 2013-09-02T09:23:03.507 回答
2

查询的结构保持不变,只是WHERE查询子句中的字符串文字需要用单引号括起来,因为在Oracle中,用双引号括起来的字符串文字将被视为标识符:

select 'DummyValue1' as ColumnNameA 
  from TableT 
 where ColumnNameA  = 'Value1'
于 2013-09-02T09:21:19.970 回答
0

如果我理解正确,这应该有效:

SELECT ColumnNameA as 'DummyValue1'
FROM TableT
WHERE ColumnNameA = 'Value1'
于 2013-09-02T09:19:52.803 回答