zoukankan      html  css  js  c++  java
  • SQLSERVER2008使用CTE转换string到Table

    多少次我们会面临这样的问题:我们需要把一组ID的Array做为参数传给存储过程.在存储过程中能转换成Table后我们会更喜欢使用这种数据.

    这里我们使用CTE来实现,例如我们有这样的字符串:'1,2,4,8',想转成这个table:

    4295 

    T-sql:

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:         Amit Gaur
    -- Create date: July 25th 2008
    -- Description:    Convert a string to a table
    -- =============================================
    CREATE FUNCTION [dbo].[strToTable] 
    (
        @array varchar(max),
        @del char(1)
    )
    RETURNS 
    @listTable TABLE 
    (
        item int
    )
    AS
    BEGIN
        
        WITH rep (item,list) AS
        (
            SELECT SUBSTRING(@array,1,CHARINDEX(@del,@array,1) - 1) as item,
            SUBSTRING(@array,CHARINDEX(@del,@array,1) + 1, LEN(@array)) + @del list
     
            UNION ALL
     
            SELECT SUBSTRING(list,1,CHARINDEX(@del,list,1) - 1) as item,
            SUBSTRING(list,CHARINDEX(@del,list,1) + 1, LEN(list)) list
            FROM rep
            WHERE LEN(rep.list) > 0
        )
        INSERT INTO @listTable
        SELECT item FROM rep
     
        RETURN 
    END
     
    GO

    如何调用呢:

       1:  DECLARE @array VARCHAR(max)
       2:  SET  @array = '1,2,4,8'
       3:  SELECT item FROM strToTable(@array,',')


    完了,实际以前你可以用function递归来实现,这里我们使用CTE.希望这篇POST对您有帮助.

    Post of Author: Petter Liu    http://wintersun.cnblogs.com

  • 相关阅读:
    正则,ant antd from验证input框只能输入数字
    React 实现简易轮播图
    Moment.js ,JavaScript 日期处理类库
    JavaScript中准确的判断数据类型--四种方法
    介绍:一款可以描绘圆圈进度条的jQuery插件(可用作统计图)
    给网页增加水印的方法,react
    IntelliJ IDEA创建web项目及异常问题解决
    CSS 代码是什么?(转)
    JSP入门:介绍什么是JSP和Servlet(转)
    INTELLIJ IDEA集成CHECKSTYLE(转)
  • 原文地址:https://www.cnblogs.com/wintersun/p/1632816.html
Copyright © 2011-2022 走看看