在TSQL中查找保留关键字

woo*_*ddy 2 sql t-sql stored-procedures keyword sql-server-2008

我不确定sql server 2008中是否有任何内置函数可以判断它是否是保留关键字.

我想这样做的原因是因为我发现有时列名使用与保留关键字相同的名称,例如,名为'desc','user','state'等的列,然后我们必须用方括号([desc],[user],[state])包装它们,以便能够正确查询列.

如果确实存在这样的内置函数,那么我们可能会这样做

if isReservedKeyword (@name) = true
  set @column = REPLACE(@column, @name, '[' + @name+ ']')
else
  set @column = @name
Run Code Online (Sandbox Code Playgroud)

Joe*_*orn 5

保留字记录在此处:http:
//msdn.microsoft.com/en-us/library/ms189822.aspx

该列表是详尽无遗的,但不会太长,以至于您不能将这些列表重新输入到您自己的数据库表中以进行检查.


Aak*_*shM 5

有一个内置函数可以处理这个问题,还有"不寻常"的字符QUOTENAME :

返回添加了分隔符的Unicode字符串,以使输入字符串成为有效的SQL Server分隔标识符.

以下示例使用字符串abc [] def并使用[和]字符创建有效的SQL Server分隔标识符.

SELECT QUOTENAME('abc[]def')

这是结果集.

[abc[]]def]

(1 row(s) affected)

请注意,字符串abc [] def中的右括号加倍,表示转义字符.