如何将函数结果用作别名?

时间:2012-02-13 19:58:16

标签: sql

我想知道是否可以使用SQL函数来命名查询列。举个简单的例子:

SELECT id AS SUBSTR('xAlias', 2) FROM foo

理论上应该返回

Alias
------
...
results
...

如果可以,可以使用哪些数据库?如果没有,那么为什么?

3 个答案:

答案 0 :(得分:3)

AFAIK,在任何主要的DBMS产品中都没有SQL方法来支持这一点。

要在Oracle中命名PIVOT列,for name in.. as似乎是最佳选择 除此之外,还有动态SQL。


以下原始答案

要命名查询列,ANSI标准只是在“AS”前面的列(派生或基础)之后添加新名称:

SELECT id, field1, field2 * qty FROM foo

以下所有列重命名:

SELECT id AS RenamedID, field1 AS Col1, field2 * qty AS ExtendedTotal FROM foo

该标准适用于几乎所有主要数据库系统 有一些供应商特定的变体,例如SQL Server允许等号

SELECT RenamedID=id FROM foo

大多数DBMS允许省略“AS”关键字

SELECT id RenamedID FROM foo

答案 1 :(得分:3)

这是一个奇怪的要求,我认为没有DBMS会支持这一点。无论如何,我做了测试,结果如下:

这在SQL Server 2008,MySQL 5和PostgreSQL 9(它们共享相同的sintax)中不起作用:

SELECT id AS left('xAlias', 2) FROM table

在Oracle 11g和SQLite 3中,这也失败了:

SELECT id AS substr('xAlias', 1, 2) FROM table

我打赌你不会发现任何支持它:P

答案 2 :(得分:1)

您可以使用动态SQL并以这种方式生成查询,但我认为没有字符串构建可以做到这一点。我想所有主要的DBMS都支持动态SQL。