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

  • 相关阅读:
    ubuntu server 12.04中文显示不了
    hustoj升级
    oj资源
    考试系统
    怎样用DOS命令替换文本里的某段字符
    ubuntu一键安装lamp
    Windows Server 2008官方简体中文正式版下载+序列号
    vsphere ubuntu网速很慢
    前端
    (运维)VMwarevCenterServerAppliance5.0安装与部署
  • 原文地址:https://www.cnblogs.com/a311300/p/1798807.html
Copyright © 2011-2022 走看看