我一直在研究我们的旧经典ASP系统中的一些代码,该系统在存储过程中构建自己的SQL,然后执行 {shudders} 。
几条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
...
答案 0 :(得分:1)
否,以下代码都是同义词:
SELECT one = 1;
SELECT 1 one;
SELECT 1 AS one;
SELECT 'one' = 1; --this is deprecated, don't use it.
您使用的(除了最后一个)通常不在首选项中。我个人使用AS
。原因之一是,我可以轻松地告诉查询返回数据集的查询,以及那些为变量分配值的查询。
答案 1 :(得分:0)
您给出的两个示例是相同的。但是,当您浏览旧代码时,您可能还会在my_field
之前找到带有@符号的变体,如下所示:
SELECT
@my_field = CASE WHEN value = whatever THEN 1 ELSE 0 END
在这种情况下,为变量@my_field
分配了一个值,但未选择任何内容。您无法使用AS @myfield
将其重写为其他语法。