SQL字符串根据要求组合,取其子字符串
一,现有6位数的字符串,打印3位数的字符串组合
DECLARE @S VARCHAR(50), @x TINYINT,@y TINYINT,@z TINYINT SET @x=1 SET @S='abcdef' WHILE @x<5 BEGIN SET @y=2 WHILE @y<6 BEGIN SET @z=3 WHILE @z<7 BEGIN IF (@x+@y-1)>5 OR (@x+@y+@z-3)>6 BREAK PRINT SUBSTRING(@S,@x,1)+SUBSTRING(@S,@x+@y-1,1)+SUBSTRING(@S,@x+@y+@z-3,1) SET @z=@z+1 END SET @y=@y+1 END SET @x=@x+1 END
二、现有6位数字符串,打印4位数字符串的组合
DECLARE @S VARCHAR(50), @x TINYINT,@y TINYINT,@z TINYINT,@n TINYINT SET @x=1 SET @S='abcdef' WHILE @x<4 BEGIN SET @y=2 WHILE @y<5 BEGIN SET @z=3 WHILE @z<6 BEGIN SET @n=4 WHILE @n<7 BEGIN IF (@x+@y-1)>4 OR (@x+@y+@z-3)>5 OR (@x+@y+@z+@n-6)>6 BREAK PRINT SUBSTRING(@S,@x,1)+SUBSTRING(@S,@x+@y-1,1)+SUBSTRING(@S,@x+@y+@z-3,1)+SUBSTRING(@S,@x+@y+@z+@n-6,1) SET @n=@n+1 END SET @z=@z+1 END SET @y=@y+1 END SET @x=@x+1 END
三、第二点的另一中算法
DECLARE @S VARCHAR(50), @x TINYINT,@y TINYINT SET @x=1 SET @S='abcdef' WHILE @x<6 BEGIN SET @y=2 WHILE @y<7 BEGIN IF (@x+@y-1)>6 BREAK PRINT REPLACE(REPLACE(@S,SUBSTRING(@S,@x,1),''),SUBSTRING(@S,@x+@y-1,1),'') SET @y=@y+1 END SET @x=@x+1 END
四、现有6位数字符串,打印5位数字符串的组合
DECLARE @S VARCHAR(50), @x TINYINT SET @x=1 SET @S='abcdef' WHILE @x<7 BEGIN PRINT REPLACE(@S,SUBSTRING(@S,@x,1),'') SET @x=@x+1 END