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

 

转载于:https://www.cnblogs.com/lxh168/p/8567690.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值