1

70-461 Querying Microsoft SQL Server 2012的第 34 页上,它说如果符合以下条件,则标识符是常规的:

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

但是在第 271 页上它说:

即使您可以在架构、表或列名的标识符中嵌入特殊字符(例如 @、# 和 $),该操作也会使标识符分隔,不再是常规的。

因此,要澄清是否有像“$”这样的特殊字符是常规标识符

4

1 回答 1

1

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

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

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

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

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

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

不支持 unicode 的正则表达式:

^[a-zA-Z_@#][a-zA-Z\d_@#$]*$
于 2013-08-19T14:24:33.543 回答