2009-04-15 27 views
12

我需要知道在SQL參數名稱中使用的有效字符是什麼。SQL Server - 參數名稱中的字符無效

給定了一些簡單的例如SELECT * FROM tblTest WHERE testid = @[X],如果X包含連字符,例如,該語句將失敗。參數名稱的有效字符是什麼?

回答

22

搜索你的SQL叢書中的「標識符」在網上,你會發現:

規則常規標識符

常規標識符格式的規則取決於數據庫 兼容性級別。該級別可以使用sp_dbcmptlevel進行設置。 當兼容水平是90,適用下列規則:

第一個字符必須是下列之一:

  • 如Unicode標準3.2中定義的信。字母的Unicode定義包括從a到z的拉丁字符,從A到Z的
    以及來自其他語言的字母字符。
  • 下劃線(_),符號(@)或數字符號(#)。

標識符開頭的某些符號在SQL Server中有特殊的含義 。以 符號開頭的常規標識符始終表示局部變量或參數,不能用作任何其他類型對象的名稱。用數字符號開頭 的標識符表示臨時表或過程。以雙號數字符號(##)開頭的標識符 表示全局臨時對象 。儘管可以使用數字符號或雙數字符號 字符來開始其他類型對象的名稱,但我們不建議這種做法。

某些Transact-SQL函數的名稱以雙號開頭,符號爲 (@@)。爲避免與這些功能混淆,您不應使用以@@開頭的 名稱。

後續字符可以包括以下內容:

  • 字母如Unicode標準3.2定義。
  • 基本拉丁文或其他國家文字的十進制數字。
  • 符號,美元符號($),數字符號或下劃線。

標識符不能是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 (`) 

馬克

+0

好工作的人,謝謝。 – Stimul8d 2009-04-15 14:16:27

1

搜索聯機叢書以查找標識符[SQL Server]。它具有參數名稱必須遵循的規則。 (這是SQL Server 2008的搜索),其他的版本應該是類似的搜索

相關問題