在 70-461查询Microsoft SQL Server 2012 的第34页上,它表示如果出现以下情况,则标识符是常规的:
规则说第一个字符必须是范围内的字母 A到Z(小写或大写),下划线(_),符号(@)或 数字符号(#)。后续字符可以包含字母,小数 数字,符号,美元符号($),数字符号或下划线。
然而,在第271页,它说:
即使您可以嵌入特殊字符,例如@,#和$ in 该操作所生成的模式,表或列名称的标识符 标识符分隔,不再常规。
所以要澄清是否会像'$'这样的特殊字符定期或不是
答案 0 :(得分:1)
在第一个字符之后$
是规范的一部分,该规范定义了常规标识符,不需要使用分隔符。
我发现SQL Server 2008 R2 Identifiers中的定义比第34页的定义更清晰。它基本上与第271页上的定义相同,但更详细。
要么你错误引用了本书的第271页,要么你的版本与我的不同并且有错误:
如果你在@,#和$ 中嵌入了特殊字符 架构,表或列的名称,名称,该操作使用的 标识符分隔,不再常规。
这是一个正则表达式,它将匹配符合定义的字符串:
^[\p{letter}_@#][\p{Letter}\p{Number}_@#$]*$
没有unicode支持的正则版的正则表达式:
^[a-zA-Z_@#][a-zA-Z\d_@#$]*$