SQL Server-参数名称中的字符无效

SQL Server-参数名称中的字符无效,sql,sql-server,parameters,Sql,Sql Server,Parameters,我需要知道SQL参数名中使用的有效字符是什么 给定一些简单的东西,如SELECT*fromtbltest,其中testid=@[X],例如,如果X包含连字符,则语句将失败。参数名称的有效字符是什么?在联机丛书中搜索标识符[SQL Server]。它具有参数名称必须遵循的规则。这是SQL Server 2008搜索,其他版本应该是类似的搜索在您的SQL联机丛书中搜索标识符,您应该找到: 常规标识符的规则 常规标识符的格式规则取决于数据库 兼容性级别。可以使用sp_dbcmptlevel设置此级别。

我需要知道SQL参数名中使用的有效字符是什么


给定一些简单的东西,如SELECT*fromtbltest,其中testid=@[X],例如,如果X包含连字符,则语句将失败。参数名称的有效字符是什么?

在联机丛书中搜索标识符[SQL Server]。它具有参数名称必须遵循的规则。这是SQL Server 2008搜索,其他版本应该是类似的搜索

在您的SQL联机丛书中搜索标识符,您应该找到:

常规标识符的规则

常规标识符的格式规则取决于数据库 兼容性级别。可以使用sp_dbcmptlevel设置此级别。 当兼容性级别为90时,以下规则适用:

第一个字符必须是以下字符之一:

Unicode标准3.2定义的字母。字母的Unicode定义包括从a到z的拉丁字符, 从A到Z,以及其他语言的字母字符。 下划线“\”、符号@或数字符号。 标识符开头的某些符号具有特殊含义 在SQL Server中的含义。以at开头的常规标识符 符号始终表示局部变量或参数,不能使用 作为任何其他类型对象的名称。开始的标识符 带有数字符号表示临时表或程序。一 以双数字符号开头的标识符表示全局 临时对象。虽然数字符号或双数字符号 字符可用于开始其他类型对象的名称, 我们不推荐这种做法

某些Transact-SQL函数的名称以双at符号开头 @@. 为避免与这些函数混淆,不应使用 以@@开头的名称

后续字符可以包括以下内容:

Unicode标准3.2中定义的字母。 来自基本拉丁语或其他国家文字的十进制数字。 at符号、美元符号$、数字符号或下划线。 标识符不能是Transact-SQL保留字。SQL Server 保留保留字的大小写版本。 不允许使用嵌入空格或特殊字符。补充的 不允许使用字符

在SQL联机丛书中搜索分隔标识符,您应该可以找到:

标识符的主体可以包含 中字符的任意组合 当前代码页,但 分隔字符本身。对于 例如,分隔标识符可以 包含空格,任何字符无效 对于常规标识符,以及任何一个 以下字符之一

tilde (~)                hyphen (-)   
exclamation point (!)    left brace ({)   
percent (%)              right brace (})   
caret (^)                apostrophe (')   
ampersand (&)            period (.)   
left parenthesis (()     backslash (\)   
right parenthesis ())    accent grave (`)
马克

也很危险:/+=\r\n、[]*和NULL/string.empty,以及@as在@sql\u服务器\u设置中。