1

我看过一些关于关键字区分大小写的文章,但我对某些事情有点困惑,不想死帖我决定在这里发布。

我正在使用 SQL Server Management Studio,并且看到如下 SQL 代码:

SELECT * from custTable as A
INNER JOIN custTable as a
ON A.custID = a.custID

然后我也看到了这样的 SQL 代码

SELECT A.CustID FROM custTable A 
INNER JOIN
(SELECT a.CustID FROM custTable a
    JOIN
    (SELECT A.CustID FROM custTable A
        JOIN 
        (SELECT CustID FROM custTable
        WHERE  [CustID] = 1
        GROUP BY [CustID] ) ap ON A.CustID = ap.CustID  
        GROUP BY A.[CustID] ) m ON A.CustID = m.CustID ) AP ON ap.CustID = A.CustID

显然,SQL 代码在别名方面是区分大小写的。但是,已经看到与上面类似的代码是这样写的:

SELECT A.CustID FROM custtable A 
INNER JOIN
(SELECT a.CustID FROM CustTable a
    JOIN
    (SELECT A.CustID FROM CUSTTABLE A
        JOIN 
        (SELECT CustID FROM Custtable
        WHERE  [CustID] = 1
        GROUP BY [CustID] ) ap ON A.CustID = ap.CustID  
        GROUP BY A.[CustID] ) m ON A.CustID = m.CustID ) AP ON ap.CustID = A.CustID

显然,SQL 代码在表名方面被认为是不区分大小写的。

这是因为表名基本上是字符串常量,而别名就像局部变量吗?

4

1 回答 1

2

通常,SQL Server 对关键字、别名或表名不区分大小写。

在您的示例中,“a”和“A”的别名是等效的。但是,它们属于不同的范围。请注意,这些on子句总是有不同的别名“ap”和“A”,“A”和“m”,等等。

如果需要,您可以使SQL Server 实例区分大小写(请参阅此处)。根据文档,SQL Server 保留保留字的大写和小写版本。不知道是不是也保留了大小写混合的保留字。

于 2013-01-03T21:51:47.673 回答