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

  • 相关阅读:
    Python基本数据类型
    Python基础之杂货铺
    第五篇:白话tornado源码之褪去模板的外衣
    第四篇:白话tornado源码之褪去模板外衣的前戏
    第三篇:白话tornado源码之请求来了
    重构if-else方法
    linux-常用命令
    Element-UI的远程搜索输入框实现
    下载功能-vue
    上传功能-弹窗实现-vue
  • 原文地址:https://www.cnblogs.com/a311300/p/1798807.html
Copyright © 2011-2022 走看看