a673328604
a673328604
采纳率0%
2017-01-05 07:07 阅读 2.1k

sqlserver 如何截取字符串查询

select * from WDNR where charindex(WDNR_SYZZ,'ORG201612011749170024,ORG201612011750240025')>0 我想的是查wdnr_syzz,根据后面那个字符串的每一个id,求并集 但是wdnr_syzz这个字段不是存的一个id 这样会查不到,怎么样使后面的字符串 一个个的查询WDNR_SYZZ 这是wdnr_syzz图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

6条回答 默认 最新

  • qq_33547043 宝贝安妮 2017-01-05 07:12

    为啥不用函数加到这个sql语句里。有截取的函数吧!自己查一下api.

    点赞 评论 复制链接分享
  • wangchunyu11155 纯菜鸟 2017-01-05 07:13

    我只知道这个字符截取函数substr(‘被截取字符' ,0,2) 不知道能不能帮上你

    点赞 评论 复制链接分享
  • huhedong1182738042 huhedong1182738042 2017-01-05 07:53

    第一、为什么不用 wdnr_syzz in('ORG201612011749170024','ORG201612011750240025')呢?
    第二、可以使用如下sql查询,达到你的要求
    create table WDNR (
    id int,
    WDNR_SYZZ varchar(100)
    )
    INSERT INTO wdnr (id, WDNR_SYZZ)
    VALUES (1, 'abcd000000001');
    INSERT INTO wdnr (id, WDNR_SYZZ)
    VALUES (2, 'abcd000000002');
    INSERT INTO wdnr (id, WDNR_SYZZ)
    VALUES (3, 'abcd000000003');
    INSERT INTO wdnr (id, WDNR_SYZZ)
    VALUES (4, 'abcd000000004');
    INSERT INTO wdnr (id, WDNR_SYZZ)
    VALUES (5, 'abcd000000005');
    INSERT INTO wdnr (id, WDNR_SYZZ)
    VALUES (6, 'abcd000000006');

    SELECT * FROM wdnr WHERE 'abcd000000006,abcd000000005' like '%'+WDNR_SYZZ+'%'

    点赞 评论 复制链接分享
  • csmzl csmzl 2017-01-05 09:16

    我擦勒!又失手了!
    不知楼主想要的是什么,不过, 授汝以鱼不如授汝以渔,下面的代码应该对你有帮助:
    把wdnr中的id都拿出来

     DECLARE 
        @WdnrSyzz VARCHAR(MAX) ,   --传入的字符串
        @New VARCHAR(200) ,  --最终截取的字符串
        @L INT ,   --字符串长度
        @IdLength INT ,   --id的长度
        @StrIndex INT,    --字符串ORG的位置
        @Stop INT
    
        SET @WdnrSyzz = 'WDNR_SYZZ,''ORG201612011749170024,ORG201612011750240025,ORG201612011750240026'''
        SET @L = LEN(@WdnrSyzz) --获取字符串长度
        --PRINT @L
        SET @Stop = 1
        SET @IdLength = 21
        SET @New = ''''
    
        WHILE @Stop <> 0
            BEGIN
                SET @StrIndex = CHARINDEX('ORG', @WdnrSyzz)
                IF @StrIndex <= @L-@IdLength
                    BEGIN
                        SET @New = @New + SUBSTRING(@WdnrSyzz,@StrIndex,@IdLength) + ','
                        SET @WdnrSyzz = SUBSTRING(@WdnrSyzz,@StrIndex+@IdLength+1,@L-@StrIndex-@IdLength+1)
                        PRINT '@WdnrSyzz: ' + @WdnrSyzz
                        SET @L = LEN(@WdnrSyzz)
                    END
                ELSE
                    BEGIN
                        SET @New = SUBSTRING(@New,1,LEN(@New)-1) + ''''
                        SET @Stop = 0   --停止循环
                    END
            END
        PRINT '@NEW: ' + @NEW
    
    点赞 评论 复制链接分享
  • csmzl csmzl 2017-01-05 09:17

    DECLARE
    @WdnrSyzz VARCHAR(MAX) , --传入的字符串
    @New VARCHAR(200) , --最终截取的字符串
    @L INT , --字符串长度
    @IdLength INT , --id的长度
    @StrIndex INT, --字符串ORG的位置
    @Stop INT

    SET @WdnrSyzz = 'WDNR_SYZZ,''ORG201612011749170024,ORG201612011750240025,ORG201612011750240026'''
    SET @L = LEN(@WdnrSyzz) --获取字符串长度
    --PRINT @L
    SET @Stop = 1
    SET @IdLength = 21
    SET @New = ''''
    
    WHILE @Stop <> 0
        BEGIN
            SET @StrIndex = CHARINDEX('ORG', @WdnrSyzz)
            IF @StrIndex <= @L-@IdLength
                BEGIN
                    SET @New = @New + SUBSTRING(@WdnrSyzz,@StrIndex,@IdLength) + ','
                    SET @WdnrSyzz = SUBSTRING(@WdnrSyzz,@StrIndex+@IdLength+1,@L-@StrIndex-@IdLength+1)
                    PRINT '@WdnrSyzz: ' + @WdnrSyzz
                    SET @L = LEN(@WdnrSyzz)
                END
            ELSE
                BEGIN
                    SET @New = SUBSTRING(@New,1,LEN(@New)-1) + ''''
                    SET @Stop = 0   --停止循环
                END
        END
    PRINT '@NEW: ' + @NEW
    
    点赞 评论 复制链接分享
  • csmzl csmzl 2017-01-05 09:18

    不知楼主想要的是什么,不过, 授汝以鱼不如授汝以渔,下面的代码应该对你有帮助:
    把wdnr_syzz中的id都拿出来

     DECLARE 
        @WdnrSyzz VARCHAR(MAX) ,   --传入的字符串
        @New VARCHAR(200) ,  --最终截取的字符串
        @L INT ,   --字符串长度
        @IdLength INT ,   --id的长度
        @StrIndex INT,    --字符串ORG的位置
        @Stop INT
    
        SET @WdnrSyzz = 'WDNR_SYZZ,''ORG201612011749170024,ORG201612011750240025,ORG201612011750240026'''
        SET @L = LEN(@WdnrSyzz) --获取字符串长度
        --PRINT @L
        SET @Stop = 1
        SET @IdLength = 21
        SET @New = ''''
    
        WHILE @Stop <> 0
            BEGIN
                SET @StrIndex = CHARINDEX('ORG', @WdnrSyzz)
                IF @StrIndex <= @L-@IdLength
                    BEGIN
                        SET @New = @New + SUBSTRING(@WdnrSyzz,@StrIndex,@IdLength) + ','
                        SET @WdnrSyzz = SUBSTRING(@WdnrSyzz,@StrIndex+@IdLength+1,@L-@StrIndex-@IdLength+1)
                        PRINT '@WdnrSyzz: ' + @WdnrSyzz
                        SET @L = LEN(@WdnrSyzz)
                    END
                ELSE
                    BEGIN
                        SET @New = SUBSTRING(@New,1,LEN(@New)-1) + ''''
                        SET @Stop = 0   --停止循环
                    END
            END
        PRINT '@NEW: ' + @NEW
    
    点赞 评论 复制链接分享

相关推荐