SQL列名和引号

时间:2015-06-08 12:14:29

标签: sql

我有一个应该忽略我的应用程序系统列的查询,我无法解释为什么它没有检测到以下列作为系统列。系统列以DW_开头,可以包含空格,因此使用了“引号”。

 DECLARE @columnName NVARCHAR(max)

 set @columnName = Quotename('DW_ID')

 print @columnName

 IF (@columnName LIKE 'DW_%')
    print 'system column'
 else
    print 'non system column'

我希望上面的查询告诉我它是一个系统列,但它告诉我它是一个非系统列。

2 个答案:

答案 0 :(得分:2)

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 添加方括号:

quotename()

Here是一个小小的SQL小提琴。

因此,您希望在模式匹配中包含这些内容。类似的东西:

select Quotename('DW_ID')

[DW_ID]

答案 1 :(得分:1)

首先,QuotenameDW_ID添加括号,这使得DW_%永远不会匹配[DW_ID]

其次,你也应该在括号上匹配。由于括号在like need to escape them中具有特殊含义:

DECLARE @columnName NVARCHAR(max)

set @columnName = Quotename('DW_ID')
-- @columnName is [DW_ID] now

print @columnName

IF (@columnName LIKE '[[]DW_%]')
   print 'system column'
else
   print 'non system column'