zoukankan      html  css  js  c++  java
  • sql 表值函数-将一个传入的字符串用2中分隔符拆分成临时表

    USE [tms]
    GO
    /****** Object: UserDefinedFunction [dbo].[fn_StrToTable_Double] Script Date: 2017/4/26 9:07:38 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author: HXQ
    -- Create date: 2016年8月9日18:04:11
    -- Description: 表值函数-将一个传入的字符串用2中分隔符拆分成临时表,例:SELECT * FROM dbo.fn_StrToTable_Double('111|222,333|444,555|666',',','|')
    -- =============================================
    ALTER FUNCTION [dbo].[fn_StrToTable_Double]
    (
    @String NVARCHAR(max), --要转换的字符串。
    @Separator1 VARCHAR(10) = ',', --分隔符。
    @Separator2 varchar(10)='|' --第二个分隔符
    )
    RETURNS @TableDouble TABLE([ID] NVARCHAR(500),[Text] NVARCHAR(500),Sort int)
    AS
    BEGIN

    SET @String = @String +@Separator2
    declare @int int=1
    WHILE CHARINDEX(@Separator1, @String) > 0
    BEGIN
    declare @str nvarchar(500)='',@str1 NVARCHAR(500)=''
    set @str=SUBSTRING(@String, 1, CHARINDEX(@Separator1, @String) - 1)
    SET @str1=SUBSTRING(@str, 1, CHARINDEX(@Separator2, @str) - 1)
    set @str=SUBSTRING(@str, CHARINDEX(@Separator2,@str)+1 , CHARINDEX(@Separator2,@str) - 1)
    INSERT INTO @TableDouble ([ID],[Text],Sort) VALUES(@str1,@str,@int)
    set @int=@int+1
    SELECT @String = SUBSTRING(@String, CHARINDEX(@Separator1, @String) + 1, LEN(@String) - CHARINDEX(@Separator1, @String))
    END
    return
    END

  • 相关阅读:
    ls命令设计思想
    Collection框架
    Yosemite 的问题
    mac vim的alt键无法正常映射
    Word Ladder
    vim自动补全
    Clone Graph
    C# 关于接口与基类的理解(二者的区别)
    C# 操作Excel基础篇(读取Excel、写入Excel)
    C# 随机数 Radom 循环生成同一的数字
  • 原文地址:https://www.cnblogs.com/zhang-wenbin/p/6766924.html
Copyright © 2011-2022 走看看