~~
SQL server合法标识符
~~
数据库名是一个标识符,表名也是一个标识符,在SQL SERVER中标识符分为两类:
标识符有两类:
1.常规标识符
符合标识符的格式规则。在 Transact-SQL 语句中使用常规标识符时不用将其分隔。
SELECT *FROM TableXWHERE KeyCol = 124
2.分隔标识符
包含在双引号 (“) 或者方括号 ([ ]) 内。符合标识符格式规则的标识符可以分隔,也可以不分隔。
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个字符。