2012-06-01 58 views
4

我有一個小問題,我知道一些解決方案,但我不知道最好的方法(或不太髒的意大利麪方式)去。從基於匹配行的變量中刪除字符串

我有一個字符串變量,我需要在類似的表達式中使用它。

所以:

declare @a varchar(100) = 'my string to use as a join from' 

select * 
from table 
where 
    column like '%' + @a + '%' 

但我不想從表中包含@a變量,我想從表中包含的變量@a任何行,所以任何行:

select * 
from table 
where 
    @a like '%' + column + '%' 

結果:

'my string' 
'as a join from' 

但現在我需要從@a變量刪除匹配的行。我怎樣才能做到這一點?

(編輯)

預期的結果:

@a = ' to use ' 

'my string' 
'as a join from' 

回答

5

您可以在選擇每一個匹配的行改變的@a值:

select @a = replace(@a, MyColumn, '') 
    from MyTable 
where @a like '%' + MyColumn + '%' 

演示:http://www.sqlfiddle.com/#!3/187d6/5(結果:@a = ' to use '


如果你想獲得集以及結果,使用臨時表來存儲匹配行:

select MyColumn 
    into #Temp 
    from MyTable 
where @a like '%' + MyColumn + '%' 

-- @a = ' to use ' 
select @a = replace(@a, MyColumn, '') from #Temp 

-- returns result set of words that matched 
select * from #Temp 

drop table #Temp 

演示:http://www.sqlfiddle.com/#!3/187d6/13

+0

母神的! – user1330271

+0

與我無法在同一個語句中分配值和檢索數據相關的問題是什麼?我需要這些話! – user1330271

+1

您可以執行兩個查詢,第一個是生成結果集的地方,第二個是更新'@ a'的地方。 – mellamokb

相關問題