在SQL中查找保留关键字

时间:2011-06-16 06:29:55

标签: sql tsql sql-server-2008 stored-procedures keyword

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

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

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

if isReservedKeyword (@name) = true
  set @column = REPLACE(@column, @name, '[' + @name+ ']')
else
  set @column = @name

3 个答案:

答案 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)

只需在每列上放置括号。这样你就可以确保即使是保留字也可以处理。