2013-01-31 23 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 
相关问题