什么构成常规标识符

时间:2013-08-19 11:29:01

标签: tsql sql-server-2012 identifier

70-461查询Microsoft SQL Server 2012 的第34页上,它表示如果出现以下情况,则标识符是常规的:

  

规则说第一个字符必须是范围内的字母   A到Z(小写或大写),下划线(_),符号(@)或   数字符号(#)。后续字符可以包含字母,小数   数字,符号,美元符号($),数字符号或下划线。

然而,在第271页,它说:

  

即使您可以嵌入特殊字符,例如@,#和$ in   该操作所生成的模式,表或列名称的标识符   标识符分隔,不再常规。

所以要澄清是否会像'$'这样的特殊字符定期或不是

1 个答案:

答案 0 :(得分:1)

在第一个字符之后$规范的一部分,该规范定义了常规标识符,不需要使用分隔符。

我发现SQL Server 2008 R2 Identifiers中的定义比第34页的定义更清晰。它基本上与第271页上的定义相同,但更详细。

要么你错误引用了本书的第271页,要么你的版本与我的不同并且有错误:

  

如果你在@,#和$ 中嵌入了特殊字符   架构,表或列的名称,名称,该操作使用的   标识符分隔,不再常规。

这是一个正则表达式,它将匹配符合定义的字符串:

^[\p{letter}_@#][\p{Letter}\p{Number}_@#$]*$

没有unicode支持的正则版的正则表达式:

^[a-zA-Z_@#][a-zA-Z\d_@#$]*$