我不确定sql server 2008中是否有任何内置函数可以判断它是否是保留关键字。
我想要这样做的原因是因为我发现有时候列名使用与保留关键字相同的名称,例如,名为“desc”,“user”,“state”等的列,然后我们必须用方括号([desc],[user],[state])包装它们才能正确查询列。
如果确实存在这样的内置函数,那么我们可能会这样做
if isReservedKeyword (@name) = true
set @column = REPLACE(@column, @name, '[' + @name+ ']')
else
set @column = @name
答案 0 :(得分:5)
此处记录了保留字:
http://msdn.microsoft.com/en-us/library/ms189822.aspx
该列表是详尽无遗的,但不会太久以至于您无法将这些列表重新输入到您自己的数据库表中以进行检查。
答案 1 :(得分:5)
有一个内置函数可以处理这个问题,还有“不寻常”字符:QUOTENAME
:
返回带有的Unicode字符串 添加分隔符以进行输入 字符串有效的SQL Server分隔 标识符
以下示例采用 字符串abc [] def并使用 [和]字符创建有效 SQL Server分隔标识符。
SELECT QUOTENAME('abc[]def')
这是结果集。
[abc[]]def]
(1 row(s) affected)
注意右括号中的 string abc [] def加倍表示 逃避角色。
答案 2 :(得分:4)
只需在每列上放置括号。这样你就可以确保即使是保留字也可以处理。