Sql 定义字段的(别名)名称

Sql 定义字段的(别名)名称,sql,sql-server,alias,Sql,Sql Server,Alias,我一直在研究我们的一个老的经典ASP系统中的一些代码,它在存储过程中构建自己的SQL,然后执行它{shubders} 一些SELECT离子线包含赋值,类似于: SELECT my_field = CASE WHEN value = whatever THEN 1 ELSE 0 END ... 这与使用标准的AS别名有什么区别吗(或者我需要知道的任何事情) SELECT CASE WHEN value = whatever THEN 1 ELSE 0 END AS m

我一直在研究我们的一个老的经典ASP系统中的一些代码,它在存储过程中构建自己的SQL,然后执行它{shubders}

一些
SELECT
离子线包含赋值,类似于:

SELECT 
    my_field = CASE WHEN value = whatever THEN 1 ELSE 0 END
    ...
这与使用标准的
AS
别名有什么区别吗(或者我需要知道的任何事情)

SELECT 
    CASE WHEN value = whatever THEN 1 ELSE 0 END AS my_field
    ...

不,以下代码是同义的:

SELECT one = 1;
SELECT 1 one;
SELECT 1 AS one;
SELECT 'one' = 1; --this is deprecated, don't use it.

您使用的(除最后一个之外)通常是首选项。就我个人而言,我使用
作为
。一个原因是我可以很容易地告诉查询返回数据集,以及那些为变量赋值的部分。

您给出的两个示例是相同的。但是,当您浏览旧代码时,您可能还会发现在
my_字段
之前有一个带有@符号的变体,如下所示:

SELECT
    @my_field = CASE WHEN value = whatever THEN 1 ELSE 0 END

在这种情况下,将为名为
@my_field
的变量赋值,但不选择任何内容。使用
AS@myfield

AS
无法将其重写为其他语法,因为
是ANSI标准语法,几乎适用于所有DBMS。Aaron Bertand对此主题有很好的阅读@约格什夏尔马——这就是我所怀疑的。谢谢你的帮助。@SeanLange-谢谢Sean,我会看看的。@Paul我几年前第一次读到这个博客,当时觉得他疯了。AS是唯一符合ANSI标准的方法。如果你读了这些评论,就会有很多受人尊敬的人提出这样的观点。但是Aaron反驳了我关于ANSI合规性的许多相同论点。基本上,可移植sql是一个神话,在现实世界中很少需要。所以我决定在黑暗中散步,并使用=,编写了一个项目。我同意Aaron的观点,一旦你习惯了,阅读起来就容易多了。在select中查找列要简单得多。我的2美分我以为会是这样,但总比后悔好!我倾向于将
完全限定为
,至少它很容易识别。谢谢你的帮助,拉奴。你也可以使用
value[alias]
@JoePhillips,这与
name alias
基本相同。我没有使用任何引用的版本,因为您还有
名称“alias”
名称“alias”
@JoePhillips-是的,我知道;它不是使用AS-fieldname[AS]别名的快捷方式。不-我对SQL Server中声明的“变量”或返回参数的赋值不感兴趣,只是字段的别名。不过,谢谢你的意见,莫顿。