2012-06-22 70 views
0
Select Column1 From Table Where @Variable Like '%' + Column2 + '%' 

似乎沒有工作,我以爲會這樣。有什麼建議麼?在參數變量上使用Like?

+0

它應該工作。你認爲這會起作用嗎? – podiluska

+0

好吧,它不會像'Where Column2 Like'%'+ @Variable +'%'' –

+0

它不是一個交換函數。什麼是你的列,變量等? – podiluska

回答

6

(模糊的問題)

你有分類和@Variable錯誤的方式:sqlFiddle

create table the_table 
(
    category varchar(10), 
    [Date] datetime, 
    Amount decimal(12, 2) 
) 

insert into the_table 
values 
('X', '2012-1-1', 10), 
('X', '2012-1-3', 10), 
('Y', '2012-1-3', 20), 
('Y', '2012-1-5', 10) 

declare @Variable varchar(10) 
set @Variable = 'Y' 

Select * 
From the_table 
--Where @Variable Like '%' + category + '%' 
Where category Like '%' + @Variable + '%' 
+0

嗯..我想我可以把變量放在一張桌子上..讓我試試。 –

1

如果你有列的數量有限,您可以使用case

where case 
     when @Variable = 'col1' then col1 
     when @Variable = 'col2' then col2 
     when @Variable = 'col3' then col3 
     ... 
     end like '%' + Column2 + '%' 

另一種選擇是動態SQL:

declare @sql nvarchar(max) 
set @sql = 'Select Column1 From Table Where ' + @Variable + 
    ' Like ''%'' + Column2 + ''%''' 
exec (@sql) 
+0

不幸的是'Variable'不是來自列的值,它實際上來自'param'。所以我想我會更新問題標題。你的第二個例子,不,不,不。 –