您可以使用單個參數字符串。用戶用逗號分隔列表中的條目。查詢得到了很多糟糕的,但我有你的前綴逗號分隔數量可變的例子。
我希望這會有所幫助。它不那麼簡單或不美觀。
在數據集中,使用了一個參數,像這樣類似的查詢或proc和它應該工作:
Declare @prefixes varchar(1000)
set @prefixes='abc,defg,efgh,hij,jkl,mno'
declare @sql nvarchar(max) = ''
declare @currentint int
set @currentint = 1
declare @maxint int
set @maxint = len(@prefixes) - len(replace(@prefixes, ',', '')) + 1
declare @currentcommaposition int
set @sql = 'IF OBJECT_ID(''tempdb..#tempTest'') IS NOT NULL DROP TABLE #tempTest
create table #tempTest
(
ID INT,
name varchar(100)
)
insert into #tempTest
(id,name)
select 1,''abcd''
union
select 2, ''defghijk''
union
select 3,''efghoot''
union
select 4,''hijack''
union
select 5,''jklmo''
union
select 6,''mnopoly''
union
select 7,''pqrstuv''
union
select 8,''tubool''
IF OBJECT_ID(''tempdb..#testresults'') IS NOT NULL DROP TABLE #testresults
create table #testresults
(
id int, name varchar(100)
)
declare @prefixes varchar(100) = ''' + @prefixes + ',''' + char(10) + ' declare @currentint int declare @maxint int = ' + convert(varchar(10),@maxint) + char(10)
while (@currentint <= @maxint)
begin
set @sql = @sql + 'set @currentint = ' + convert(varchar(10),@currentint) + ' declare @suffix' + convert(varchar(2), @currentint) + ' VARCHAR(100)' + char(10)
+ 'set @suffix' + convert(varchar(2), @currentint) + '= substring(@prefixes,0,charindex('','',@prefixes))' + char(10)
+
'set @prefixes=Right(@prefixes,len(@prefixes)-charindex('','',@prefixes))' + char(10) +
'insert into #testresults (id, name)
select id, name from #temptest t where t.name like @suffix' + convert(varchar(2), @currentint) + ' + ''%''' + char(10)
+ 'if (@currentint = @maxint) begin select * from #testresults end ' + char(10)
set @currentint = @currentint + 1
end
exec sp_executesql @sql
喜@ 4444感謝我的編輯的問題,但答案始終是更好... –
嗨安迪。我不知道你的問題的答案。我儘可能地改進和格式化了它,以吸引那些能*回答它的人。 – 4444
有問題的鏈接不會吸引儘可能多的答案。你應該停止在「謝謝編輯我的問題」 – dazedandconfused