-- SQL Server Split函数 

 -- Author:zc_0101  

 -- 说明: 

 -- 支持分割符多字节 

 -- 使用方法  

 -- Select * FROM DBO.F_SQLSERVER_SPLIT('1203401230105045','0')     

 -- select * from DBO.F_SQLSERVER_SPLIT('abc1234a12348991234','1234')  

 -- Select * from DBO.F_SQLSERVER_SPLIT('ABC',',')    

  

 

 CREATE   FUNCTION  F_SQLSERVER_SPLIT( @Long_str   varchar ( 8000 ), @split_str   varchar ( 100 ))    

 RETURNS    @tmp   TABLE (        

     ID           inT       IDENTITY   PRIMARY   KEY ,      

     short_str    varchar ( 8000 )    

 )    

 AS    

 BEGIN    

      DECLARE   @long_str_Tmp   varchar ( 8000 ), @short_str   varchar ( 8000 ), @split_str_length   int    

      SET   @split_str_length   =   LEN ( @split_str )    

      IF   CHARINDEX ( @split_str , @Long_str ) = 1  

           SET   @long_str_Tmp = SUBSTRING ( @Long_str , @split_str_length + 1 , LEN ( @Long_str ) - @split_str_length )

      ELSE 

           SET   @long_str_Tmp = @Long_str 

      IF   CHARINDEX ( REVERSE ( @split_str ), REVERSE ( @long_str_Tmp )) > 1     

          SET   @long_str_Tmp = @long_str_Tmp + @split_str     

      ELSE    

          SET   @long_str_Tmp = @long_str_Tmp     

      IF   CHARINDEX ( @split_str , @long_str_Tmp ) = 0 

          Insert   INTO   @tmp   select   @long_str_Tmp  

      ELSE 

          BEGIN 

              WHILE   CHARINDEX ( @split_str , @long_str_Tmp ) > 0     

                  BEGIN    

                      SET   @short_str = SUBSTRING ( @long_str_Tmp , 1 , CHARINDEX ( @split_str , @long_str_Tmp ) - 1 )    

                      DECLARE   @long_str_Tmp_LEN   INT , @split_str_Position_END   int    

                      SET   @long_str_Tmp_LEN   =   LEN ( @long_str_Tmp )    

                      SET   @split_str_Position_END   =   LEN ( @short_str ) + @split_str_length     

                      SET   @long_str_Tmp = REVERSE ( SUBSTRING ( REVERSE ( @long_str_Tmp ), 1 , @long_str_Tmp_LEN - @split_str_Position_END ))

                      IF   @short_str <> ''   Insert   INTO   @tmp   select   @short_str     

                  END            

          END 

      RETURN      

 END

SQL Server 完美SPLIT函数的更多相关文章

  1. SQL Server用SPLIT函数分割字符串

      declare @str varchar(100),@sql varchar(1000)set @str='1,2,3,4,5,6,7,8,9,10'set @sql='select Value= ...

  2. SQL Server 实现Split函数

    添加一个表值函数. CREATE function [dbo].[fnSplit] ( ), --要分割的字符串 ) --字符串之间的分隔符 ) ,), TempName )) as begin de ...

  3. 深入浅出SQL Server 2008 分区函数和分区表

    原文:深入浅出SQL Server 2008 分区函数和分区表 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的 ...

  4. SQL Server 2008 分区函数和分区表详解

    [摘要]本文详细介绍SQL Server 2008 分区函数和分区表,包括查询某个分区.归档数据.添加分区.删除分区等内容. 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门 ...

  5. sql server中常用方法函数

    SQL SERVER常用函数 1.DATEADD在向指定日期加上一段时间的基础上,返回新的 datetime 值. (1)语法: DATEADD ( datepart , number, date ) ...

  6. SQL Server 内置函数、临时对象、流程控制

    SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...

  7. SQL Server:字符串函数

    以下所有例子均Studnet表为例: 1. len():计算字符串长度 len()用来计算字符串的长度,每个中文汉字或英文字母都为一个长度 select sname, len(sname) from ...

  8. SQL Server 分隔字符串函数实现

    在SQL Server中有时候也会遇到字符串进行分隔的需求.平时工作中常常遇到这样的需求,例如:人员数据表和人员爱好数据表,一条人员记录可以多多人员爱好记录,而往往人员和人员爱好在界面展示层要一并提交 ...

  9. SQL Server数据库ROW_NUMBER()函数使用详解

    SQL Server数据库ROW_NUMBER()函数使用详解 摘自:http://database.51cto.com/art/201108/283399.htm SQL Server数据库ROW_ ...

随机推荐

  1. HashMap,HashTable ,LinkedHashMap,TreeMap的区别

    Map:主要是存储键值对,不允许键重复,但可以值重复. HashMap:根据键的HashCode值来存储数据,根据键直接获取值.具有很快的访问速度,遍历时,取得的数据值的顺序都是随机的.hashMap ...

  2. iOS开发播放文本

    iOS7以后AVSpeechSynthesizer苹果开放了这个类   它可以将文本转化成声音并播放: 下面的是我的封装使用起来特别简单: // //  TTSSpeak.h //  SayLoveY ...

  3. EMPTY isset unset var_dump 用法

    empty    判断一个变量是否为空,返回布尔值  isset  isset 判断一个值是否存在  unset取消变量设置, var_dump 打印变量并类型

  4. Linux入门(五)linux服务器文件远程管理

     1 使用filezila远程管理linux服务器文件 filezila下载地址:https://filezilla-project.org/ filezila默认只能登录普通用户,如果想要root用 ...

  5. linux deepin 12.12.1和Windows 7双系统修改默认启动项

    1.打开终端,输入 sudo gedit /etc/default/grub ,然后输入密码.2.在出来的文本编辑器中找到 GRUB_DEFAULT=0 一行,把0改为2(因为我的Windows 7在 ...

  6. Tomcat基础

    一.Tomcat体系结构 tomcat应该是java程序员最熟悉的servlet容器了,作为一个用java实现的web应用程序服务器,下图是tomcat的体系结构 一个常见的Tomcat配置文件以下x ...

  7. Excel教程(7) - 工程函数

    BESSELI 用途:返回修正 Bessel 函数值,它与用纯虚数参数运算 时的 Bessel 函数值相等. 语法:BESSELI(x,n)     参数:X 为参数值.N 为函数的阶数.如果 n 非 ...

  8. nefu 1191 平行宇宙 (bfs)

    Description 小k是时空贸易者,他经常在两个平行宇宙之间往来经商,现在他要从S点到达E点,问最少需要多长时间.(已知小k在同一个宇宙中只能向上下左右四个方向移动,每次移动需要1个单位时间,且 ...

  9. Gentoo安装详解(五)-- 安装X桌面环境

    安装X桌面环境: 安装Xorg: 检测显卡信息: dmesg | grep video lspci | grep -i VGA 配置INPUT_DEVICE.VIDEO_CARDS变量: 在安装Xor ...

  10. Openjudge-计算概论(A)-比饭量

    描述: 3个人比饭量,每人说了两句话: A说:B比我吃的多,C和我吃的一样多 B说:A比我吃的多,A也比C吃的多 C说:我比B吃得多,B比A吃的多. 事实上,饭量和正确断言的个数是反序的关系. 请编程 ...