我有一个应该忽略我的应用程序系统列的查询,我无法解释为什么它没有检测到以下列作为系统列。系统列以DW_开头,可以包含空格,因此使用了“引号”。
DECLARE @columnName NVARCHAR(max)
set @columnName = Quotename('DW_ID')
print @columnName
IF (@columnName LIKE 'DW_%')
print 'system column'
else
print 'non system column'
我希望上面的查询告诉我它是一个系统列,但它告诉我它是一个非系统列。
答案 0 :(得分:2)
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
添加方括号:
quotename()
Here是一个小小的SQL小提琴。
因此,您希望在模式匹配中包含这些内容。类似的东西:
select Quotename('DW_ID')
[DW_ID]
答案 1 :(得分:1)
首先,Quotename
为DW_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'