t-sql中引号的使⽤规则转
在标准sql中,引号的使⽤
请注意,我们在例⼦中的条件值周围使⽤的是单引号。
SQL 使⽤单引号来环绕⽂本值(⼤部分数据库系统也接受双引号)。如果是数值,请不要使⽤引号。
⽂本值:
这是正确的:
SELECT*FROM Persons WHERE FirstName='Bush'
这是错误的:
SELECT*FROM Persons WHERE FirstName=Bush
数值:
这是正确的:
SELECT*FROM Persons WHERE Year>1965
这是错误的:
SELECT*FROM Persons WHERE Year>'1965'
“单引号和双引号之间的区别最早在SQL92标准中引⼊的。对于标识符,这个标准区分了常规标识符和分隔的标识符。两者主要的区别在于:分隔的标识符被括在双引号中(Transact-SQL也⽀持⽅括号的使⽤:[标识符])并且是区分⼤⼩写的。单引号只⽤于字符串的定界。总的来说,引⼊分隔的标识符是为了对标识符进⾏规范,否则就会与保留字相同了。特别要提到的是,分隔的标识符能够使你在命名(标识符或变量的名字)的时候,免于使⽤在将来的SQL标准中可能出现的保留字。另外,分隔的标识符能够包含⼀些在通常的标识符名称中被视为不合法的字符,如空格。
在SQL SERVER中,双引号的使⽤由SET 语句中的QUOTED_IDENTIFIER选项来定义。如果这个选项被设为ON,则双引号中的标识符将被定义为⼀个分隔的标识符。在这种情况下,双引号不能被⽤于定界字符串。”
当 QUOTED_IDENTIFIER 为 ON 时,对于 SQL 语句中的双引号和单引号 (') 的使⽤,SQL Server 遵循 SQL-92 规则:双引号只能⽤于分隔标识符,不能⽤于分隔字符串。
为保持与现有应⽤程序的兼容性,SQL Server 并不完全强制该规则。如果字符串没有超过标识符的长度,则该字符串可包含在双引号内。但不建议这样做。
单引号必须⽤来包含字符串,不能⽤于分隔标识符。
如果字符串包含单引号,则需要在单引号前再增加⼀个单引号:
SELECT*FROM "My Table"
WHERE "Last Name" ='O''Brien'
当 QUOTED_IDENTIFIER 为 OFF 时,对于双引号和单引号的使⽤,SQL Server 遵循如下规则:
引号不能⽤于分隔标识符,⽽是⽤括号作为分隔符。
单引号或双引号可⽤于包含字符串。
如果使⽤双引号,嵌⼊的单引号不需要⽤两个单引号来表⽰:
SELECT*FROM[My Table]
WHERE[Last Name]= "O'Brien"
⽆论 QUOTED_IDENTIFIER 的设置如何,都可以在括号中使⽤分隔符。
分隔标识符规则
分隔标识符的格式规则是:
分隔标识符可以包含与常规标识符相同的字符数(1 到 128 个,不包括分隔符字符)。本地临时表标识符最多可以包含 116 个字符。标识符的主体可以包含当前代码页内字母(分隔符本⾝除外)的任意组合。例如,分隔符标识符可以包含空格、对常规标识符有效的任何字符以及下列任何字符:代字号 (~) 连字符 (-)
惊叹号 (!) 左括号 ({)
百分号 (%) 右括号 (})
插⼊号 (^) 撇号 (')
and 号 (&) 句号 (.)
左圆括号 (() 反斜杠 (\)字符串长度规则
右圆括号 ()) 重⾳符号 (`)
转载标识符的概念:
数据库名是⼀个标识符,表名也是⼀个标识符,在SQL SERVER中标识符分为两类:
标识符有两类:
常规标识符
符合标识符的格式规则。在 Transact-SQL 语句中使⽤常规标识符时不⽤将其分隔。
SELECT*FROM TableXWHERE KeyCol =124
分隔标识符
包含在双引号 (") 或者⽅括号 ([ ]) 内。符合标识符格式规则的标识符可以分隔,也可以不分隔。
SELECT*FROM[TableX]
--Delimiter is optional.WHERE [KeyCol] = 124 --Delimiter is optional.
在 Transact-SQL 语句中,对不符合所有标识符规则的标识符必须进⾏分隔。
SELECT*FROM[My Table]
--Identifier contains a space and uses a reserved keyword.WHERE [order] = 10 --Identifier is a reserved keyword.
常规标识符和分隔标识符包含的字符数必须在 1 到 128 之间。对于本地临时表,标识符最多可以有 116 个字符。
两者重要的区别:常规标识符必须严格遵守命名的规定,⽽分隔标识符则可以不遵守命名规定,只要⽤[],""分隔出来就可以。
标识符格式:
1、标识符必须是统⼀码(Unicode)2.0标准中规定的字符,以及其他⼀些语⾔字符。如汉字.
2、标识符后的字符可以是(除条件⼀)“_”、“@”、“#”、“$”及数字。
3、标识符不允许是Transact-SQL的保留字。
4、标识符内不允许有空格和特殊字符。
另外,某些以特殊符号开头的标识符在SQL SERVER 中具有特定的含义。如以“@”开头的标识符表⽰这是⼀个局部变量或是⼀个函数的参数;以#开头的标识符表⽰这是⼀个临时表或是⼀存储过程。以“##”开头的表⽰这是⼀个全局的临时数据库对象。Transact-SQL的全局变量以“@@”开头。标识符最多可以容纳128个字符。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论