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

时间:2009-04-15 13:35:15

标签: sql sql-server parameters

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

如果给出SELECT * FROM tblTest WHERE testid = @[X]之类的简单内容,如果X包含连字符,则该语句将失败。参数名称的有效字符是什么?

2 个答案:

答案 0 :(得分:22)

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

常规标识符规则

  

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

     

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

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

标识符开头的某些符号具有特殊符号   在SQL Server中的含义。以at开头的常规标识符   sign总是表示局部变量或参数,不能使用   作为任何其他类型对象的名称。开始的标识符   带数字符号表示临时表或过程。一个   以双数字符号(##)开头的标识符表示全局   临时对象。虽然数字符号或双数字符号   字符可用于开始其他类型对象的名称,   我们不推荐这种做法。

     

某些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 (`)

马克

答案 1 :(得分:1)

在线搜索联系人以获取标识符[SQL Server]。它具有参数名称必须遵循的规则。 (这是SQL Server 2008搜索),其他版本应该是类似的搜索