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

 

posted @ 2018-03-14 15:06  tiger_yj  阅读(508)  评论(0编辑  收藏  举报