22,301
社区成员




declare @s1 varchar(100),@s2 varchar(100),@s varchar(200)
set @s1='abcd'
set @s2='opqrs'
--解:
select @s=isnull(@s,'')+
(case when len(@s1)>=number then substring(@s1,number+1,1) else '' end)+
(case when len(@s2)>=number then substring(@s2,number+1,1) else '' end)
from master..spt_values where type='p' and number<=any(select len(@s1) union all select len(@s2))
select @s
/*
----------------------------
aobpcqdrs
(1 行受影响)
*/
DECLARE @A NVARCHAR(30);
DECLARE @B NVARCHAR(30);
SET @A='ABCDE';
SET @B='UYYRWWVC';
DECLARE @SQL NVARCHAR(2000);
DECLARE @I INT;
SET @I=1;
SET @SQL='';
IF LEN(@A)>LEN(@B)
BEGIN
WHILE @I<=LEN(@B)
BEGIN
SET @SQL=@SQL+SUBSTRING(@A,@I,1);
SET @SQL=@SQL+SUBSTRING(@B,@I,1);
SET @I=@I+1;
END
SET @SQL=@SQL+SUBSTRING(@A,@I,LEN(@A)-@I+1);
END
ELSE
BEGIN
WHILE @I<=LEN(@A)
BEGIN
SET @SQL=@SQL+SUBSTRING(@A,@I,1);
SET @SQL=@SQL+SUBSTRING(@B,@I,1);
SET @I=@I+1;
END
SET @SQL=@SQL+SUBSTRING(@B,@I,LEN(@B)-@I+1);
END
SELECT @SQL;