Tsql 什么构成常规标识符

Tsql 什么构成常规标识符,tsql,sql-server-2012,identifier,Tsql,Sql Server 2012,Identifier,在查询Microsoft SQL Server 2012的第70-461页的第34页中,指出在以下情况下,标识符是常规的: 规则规定第一个字符必须是范围内的字母 A到Z(小写或大写)、下划线(389;)、符号(@)或 数字符号(#)。后面的字符可以包括字母、小数点 数字、at符号、美元符号($)、数字符号或下划线 然而,在第271页上,它说: 即使您可以在中嵌入@、#和$等特殊字符 操作生成的架构、表或列名的标识符 标识符由分隔符分隔,不再是常规标识符 因此,要澄清的是,在第一个字符后面有“$”

在查询Microsoft SQL Server 2012的第70-461页的第34页中,指出在以下情况下,标识符是常规的:

规则规定第一个字符必须是范围内的字母 A到Z(小写或大写)、下划线(389;)、符号(@)或 数字符号(#)。后面的字符可以包括字母、小数点 数字、at符号、美元符号($)、数字符号或下划线

然而,在第271页上,它说:

即使您可以在中嵌入@、#和$等特殊字符 操作生成的架构、表或列名的标识符 标识符由分隔符分隔,不再是常规标识符


因此,要澄清的是,在第一个字符后面有“$”这样的特殊字符是常规标识符还是非常规标识符是定义常规标识符的规范的一部分,不需要使用分隔符

我发现中的定义比第34页的定义更清楚。它与第271页上的基本相同,但更详细

您可能错误引用了本书第271页,或者您的版本与我的版本不同,并且存在错误:

如果将@、#和$以外的特殊字符嵌入 模式、表或列的标识符、名称,该操作使 标识符分隔,不再是常规的

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

^[\p{letter}_@#][\p{Letter}\p{Number}_@#$]*$
不支持unicode的口味的正则表达式:

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

在第一个字符后面有
$
是定义常规标识符的规范的一部分,不需要使用分隔符

我发现中的定义比第34页的定义更清楚。它与第271页上的基本相同,但更详细

您可能错误引用了本书第271页,或者您的版本与我的版本不同,并且存在错误:

如果将@、#和$以外的特殊字符嵌入 模式、表或列的标识符、名称,该操作使 标识符分隔,不再是常规的

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

^[\p{letter}_@#][\p{Letter}\p{Number}_@#$]*$
不支持unicode的口味的正则表达式:

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

看起来它们不需要特殊处理。似乎它们不需要特殊处理。谢谢,在第280页,它确实有一个问题,其中一个答案没有被选择,$name类别是不规则的。所以我猜这个问题也错了。。。,谢谢,第280页有一个问题,它说$name类别对于未选择的答案之一是不规则的。所以我猜这个问题也错了。。。,