开发者社区> 问答> 正文

拆分字符串值

拆分字符串值

展开
收起
贺贺_ 2019-12-02 21:34:40 353 0
1 条回答
写回答
取消 提交回答
  • 拆分逗号分隔字符串的最快方法是使用数字表。如果数据库中没有数字表,则使用此代码创建一个

    -- Create our Pivot table ** do this only once
        CREATE TABLE NumberPivot (NumberID INT PRIMARY KEY)
        
           INSERT INTO NumberPivot
           SELECT number FROM master..spt_values
    	where type = 'P'
       
        GO
    
    

    现在,您可以运行以下代码来返回逗号分隔字符串中每个值在其自己的行中

    DECLARE @SplitString VARCHAR(1000)
        SELECT @SplitString ='1,4,77,88,4546,234,2,3,54,87,9,6,4,36,6,9,9,6,4,4,68,9,0,5,3,2,'
         
        SELECT SUBSTRING(',' + @SplitString + ',', NumberID + 1,
        CHARINDEX(',', ',' + @SplitString + ',', NumberID + 1) - NumberID -1)AS VALUE
        FROM NumberPivot
        WHERE NumberID <= LEN(',' + @SplitString + ',') - 1
        AND SUBSTRING(',' + @SplitString + ',', NumberID, 1) = ','
        GO
    您也可以通过使用"独特"返回不同的值
    DECLARE @SplitString VARCHAR(1000)
        SELECT @SplitString ='1,4,77,88,4546,234,2,3,54,87,9,6,4,36,6,9,9,6,4,4,68,9,0,5,3,2'
         
        SELECT DISTINCT SUBSTRING(',' + @SplitString + ',', NumberID + 1,
        CHARINDEX(',', ',' + @SplitString + ',', NumberID + 1) - NumberID -1)AS VALUE
        FROM NumberPivot
        WHERE NumberID <= LEN(',' + @SplitString + ',') - 1
        AND SUBSTRING(',' + @SplitString + ',', NumberID, 1) = ','
    
    

    现在,您可以将结果转储到表中,然后可以将其中一个真实表与该表联接,该表的执行速度会快得多

    2019-12-02 21:35:12
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载