zoukankan      html  css  js  c++  java
  • SqlServer Split功能函数


    /*========================================================
    函数名称:f_SplitToGuid
    作 用:实现split功能 的函数
    更新记录:
       1、 ******                
    设计思路:将nvarchar类型字符结合的一个串,分隔到一张只有一列nvarchar类型的表里
     =========================================================*/
    ALTER function [dbo].[f_SplitToNvarchar]
    (
    @SourceSql nvarchar(max),--源分隔字符串
    @StrSeprate varchar(10)--分隔符
    )
    returns @temp table(a nvarchar(max))
    as
    begin
        declare @i int
        set @SourceSql=rtrim(ltrim(@SourceSql))
        set @i=charindex(@StrSeprate,@SourceSql)
        while @i>=1
        begin
            insert @temp values(left(@SourceSql,@i-1))
            set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
            set @i=charindex(@StrSeprate,@SourceSql)
        end
        if @SourceSql<>'\'
           insert @temp values(@SourceSql)
        return
    end

    /*========================================================
    函数名称:f_SplitToInt
    作 用:实现split功能 的函数
    更新记录:
       1、 ******                
    设计思路:将int类型字符组合的一个串,分隔到一张只有一列int类型的表里
     =========================================================*/
    ALTER function [dbo].[f_SplitToInt]
    (
    @SourceSql varchar(max),--源分隔字符串
    @StrSeprate varchar(10)--分隔符
    )
    returns @temp table(a int)
    as
    begin
        declare @i int
        set @SourceSql=rtrim(ltrim(@SourceSql))
        set @i=charindex(@StrSeprate,@SourceSql)
        while @i>=1
        begin
            insert @temp values(left(@SourceSql,@i-1))
            set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
            set @i=charindex(@StrSeprate,@SourceSql)
        end
        if @SourceSql<>'\'
           insert @temp values(@SourceSql)
        return
    end

    /*========================================================
    函数名称:f_SplitToGuid
    作 用:实现split功能 的函数   
     =========================================================*/
    ALTER function [dbo].[f_SplitToGuid]
    (
    @SourceSql nvarchar(max),--源分隔字符串
    @StrSeprate varchar(10)--分隔符
    )
    returns @temp table(a uniqueidentifier)
    as
    begin
        declare @i int
        set @SourceSql=rtrim(ltrim(@SourceSql))
        set @i=charindex(@StrSeprate,@SourceSql)
        while @i>=1
        begin
            insert @temp values(left(@SourceSql,@i-1))
            set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
            set @i=charindex(@StrSeprate,@SourceSql)
        end
        if @SourceSql<>'\'
           insert @temp values(@SourceSql)
        return
    end

    /*========================================================

    调用例子:

      =========================================================*/

    CREATE PROC  [dbo].[GetSolutionByEnNameList]
     @EnNameList Nvarchar(max)
    as
    begin

     SELECT    ID,EnName
     FROM    A
     WHERE  A.EnName
      IN( SELECT a FROM  f_SplitToNvarchar(@EnNameList,','))
     
    end

  • 相关阅读:
    Manjaro Linux自带的Python没有安装IDLE的解决办法
    Python入门 | IDLE的介绍和使用方法
    用U盘装CentOS 7出现dracut:/#问题的解决办法
    在Ubuntu下,如何安装坚果云deb文件
    windows7下进行ubuntu U盘启动盘的制作
    oracle 死锁和锁等待区别
    MySQL数据库设计总结
    oracle开机自启
    微信备份提示当前网络状况复杂,请尝试使用其他网络的解决方法
    ORA-27090 Unable to reserve kernel resources for asynchronous disk I/O
  • 原文地址:https://www.cnblogs.com/a311300/p/1798807.html
Copyright © 2011-2022 走看看