2013-01-31 52 views
2

我與SQL函數的一個項目一個問題:移動的SQL字符串的一部分到另一個變量

DECLARE @Var1 varchar(8000) = '{strong} this is strong{/strong} this is not strong.'; 

DECLARE @Var2 varchar(8000) 

如果我想'{strong}''{/strong}'之間移動的字符串@Var2有這個結果

@Var1 = 'this is not strong.' 
@Var2 = '{strong} this is strong {/strong}' 

我應該怎麼做?

PS:我還是新來的sql :(

謝謝

+0

數據庫? (我懷疑MS SQL Server,但仍然) –

+0

你爲什麼使用SQL標籤? – Steve

+0

沒有強是隻是一個字沒有具體的字符串是MS SQL DB – SalemRady

回答

2

嘗試下面的查詢......它會幫助你....

declare @var1 varchar(8000) 
declare @var2 varchar(8000) 
set @var1 ='{strong} this is strong{/strong} this is not strong.' 
select @var2 = substring(@var1,charindex('{strong}',@var1)+len('{strong}'),charindex('{/strong}',@var1)-charindex('{strong}',@var1)-len('{strong}')) 
SET @var1 = REPLACE(@var1,'{strong}' + @var2 + '{/strong}','') 
select @var1 as Var1,@var2 as Var2 
0

SQL不是地點最好選擇做這樣的事情

如果一定要我,就像有人拿着槍指着我的孩子

我願意做這樣的事情,可能需要調整您的選擇SQL

的味道這是T-SQL

Declare v1 VarChar(255) 
Declare v2 VarChar(255) 


set v1 = '{Strong}$REPLACE${/Strong}' 
set v2 = 'This is strong' 

Select Replace(v1,'$REPLACE$',v2) 

,你將不得不做一些像使用CHARINDEX找到「}另一種方法{/」 然後使用子串砍V1(如 '{斯特朗} {/強}'),然後與V2將它們連接起來

0

使用LEFTRIGHTCHARINDEX作爲;

declare @start varchar(50)='{strong}', @end varchar(50)='{/strong}' 

select @var2 = left(@var1,charindex(@end,@var1,1)+len(@end)), 
     @var1= right(@var1,len(@var1)-(charindex(@end,@var1,1)+len(@end))) 

SQL DEMO 1

這是有點瘋狂,但通用和一些文字before '{strong}' tag也有效。

declare 
@var1 varchar(100)= 'front text{strong} this is strong{/strong} this is not strong', 
@var2 varchar(100)= '' 

declare @start varchar(50)='{strong}', @end varchar(50)='{/strong}' 

select @var2 = substring(myString,ci1,ci2+len(@end)-ci1), 
     @var1 = right(myString,len(myString) - (ci2+ len(@end))) 
from (
    select @var1 myString, charindex(@start,@var1,1) ci1, 
      charindex(@end,@var1,charindex(@start,@var1,1)) ci2 
) T 

select @var2 var2 ,@var1 var1 

SQL DEMO 2

--Results 
VAR2        VAR1 
{strong} this is strong{/strong} this is not strong 
相關問題