Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于SQL语法区分大小写的说明_Sql_Sql Server - Fatal编程技术网

关于SQL语法区分大小写的说明

关于SQL语法区分大小写的说明,sql,sql-server,Sql,Sql Server,我看过一些关于关键字区分大小写的文章,但我对一些事情有点困惑,不想发表necro文章,我决定在这里发表 我正在使用SQL Server Management Studio,看到的SQL代码如下: SELECT * from custTable as A INNER JOIN custTable as a ON A.custID = a.custID SELECT A.CustID FROM custtable A INNER JOIN (SELECT a.CustID FROM CustTa

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

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

SELECT * from custTable as A
INNER JOIN custTable as a
ON A.custID = a.custID
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代码对于别名是区分大小写的。但是,我们已经看到上面类似的代码是这样写的:

SELECT * from custTable as A
INNER JOIN custTable as a
ON A.custID = a.custID
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代码对于表名是不区分大小写的


这是因为表名基本上是字符串常量,别名类似于局部变量吗?

一般来说,SQL Server对关键字、别名或表名不区分大小写

在您的示例中,“a”和“a”的别名是等效的。然而,它们在不同的范围内。注意子句上的
总是有不同的别名“ap”和“A”、“A”和“m”,以此类推


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

当1=1时选择大小写,然后选择'one'或'zero'结束
>“one”,所以它也保留大小写混合。@MichaelBerkowski。问题不在于它是否承认混合情况。问题是在区分大小写的排序规则中,名为[fROM]和[fROM]的变量是否会不同。我对文档的理解是,[FROM]和[FROM]在这种情况下是相同的。从这个链接:
标识符的排序规则取决于它的定义级别。实例级对象的标识符(如登录名和数据库名)被指定为实例的默认排序规则。数据库中对象的标识符(如表、视图和列名)被指定为数据库的默认排序规则。例如,可以在具有区分大小写排序规则的数据库中创建两个名称仅大小写不同的表,但不能在具有区分大小写排序规则的数据库中创建。