在 SQL 中推断具有 as 'string'的列



如何推断指定有 ' as ' 的列,如下所示:

select 'foo' as 'bar'
where 'bar' = 'foo'
order by 'bar'

我可以看到,"order by"条款似乎接受"bar"。 'where"子句,只是做一个string-compare,并返回假。 我会跳过用双引号转义引号,因为无论如何它都是string-compare。有什么提示吗?谢谢!

SQL 子句 (select , from , where ,, order by ( 按特定顺序计算。 Order By 子句在 SELECT 子句之后计算,因此 Order By 子句知道别名的存在。where 子句在 select 子句之前计算,为此您有错误 .. 对于 WhereClasue You mus 在 Select 中重复相同的列名

在使用单引号的情况下,您只是比较字符串而不是列,如果您需要正确的方法,您应该使用

select 'foo' as bar
from dual
where 'foo' = 'foo'
order by bar

这不能这样做,因为别名 foo -> bar 仅在选择之外可用。在选择部分之前计算 where-子句。

select foo, bar
from
(
 select foo, foo as bar
 from dual
) as i
where bar = foo
order by bar

如果您的原始查询是子查询而不是按原样查询,这将起作用。所以像这样——

select bar from 
(
  select 'foo' as 'bar'
  from dual
) where 'bar' = 'foo'
  order by 'bar'

最新更新