我需要知道在SQL参数名称中使用的有效字符是什么。
如果给出SELECT * FROM tblTest WHERE testid = @[X]
之类的简单内容,如果X包含连字符,则该语句将失败。参数名称的有效字符是什么?
答案 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搜索),其他版本应该是类似的搜索