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

Eig*_*ite 12 sql sql-server parameters

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

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

mar*_*c_s 22

在线搜索SQL书籍中的"标识符",您应该找到:

常规标识符规则

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

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

  • Unicode标准3.2定义的字母.字母的Unicode定义包括从a到z,
    从A到Z的拉丁字符,以及来自其他语言的字母字符.
  • 下划线(_),符号(@)或数字符号(#).

标识符开头的某些符号在SQL Server中具有特殊含义.以at符号开头的常规标识符始终表示局部变量或参数,不能用作任何其他类型对象的名称.以数字符号开头的标识符表示临时表或过程.以双数字符号(##)开头的标识符表示全局临时对象.虽然数字符号或双数字符号可用于开始其他类型对象的名称,但我们不建议使用此做法.

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

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

  • Unicode标准3.2中定义的字母.
  • 来自Basic Latin或其他国家脚本的十进制数字.
  • 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 (`)
Run Code Online (Sandbox Code Playgroud)