zoukankan      html  css  js  c++  java
  • SQL操作——根据分隔符截取字符串

     

    小小小收藏夹 2009-09-08 09:52:59 阅读558 评论0    字号: 订阅

    示例:
    传入多个Email地址,通过每个Email地址间的','分隔符,将各Email地址分开。
    SELECT * FROM dbo.uf_Split('aa@aa.com,bb@bb.com,cc@cc.com,dd@dd.com',',');
    查询结果:
    subid      autoid
    aa@aa.com 1
    bb@bb.com 2
    cc@cc.com 3
    dd@dd.com 4
    下面是[uf_Split]方法的具体实现:
    CREATE   FUNCTION [dbo].[uf_Split](@str VARCHAR(max),@splitchar CHAR(1))      
    RETURNS  @t TABLE(subid VARCHAR(1000),autoid INT) AS       
    /*      
    subject:split函数(目前只能对单个字符进行分割,不能以词组方式分割)      
    author:kq zhou     
    create date:2009-4-1      
    */      
    BEGIN      
          
    DECLARE @substr VARCHAR(max)      
    SET @substr=@str      
    DECLARE @i INT,@j INT      
    SET @j=LEN(REPLACE(@str,@splitchar,REPLICATE(@splitchar,2)))-LEN(@str)--获取分割符个数      
    IF @j=0      
    BEGIN      
      INSERT INTO @t VALUES (@substr,1) --没有分割符则插入整个字串       
    END      
    ELSE      
    BEGIN      
     SET @i=0      
     DECLARE @m int      
     WHILE @i<=@j      
     BEGIN      
       IF(@i<@j)      
       BEGIN      
        SET @m=CHARINDEX(@splitchar,@substr)-1 --获取分割符的前一位置      
        INSERT INTO @t VALUES(LEFT(@substr,@m),@i+1)       
        SET @substr=RIGHT(@substr,LEN(@substr)-(@m+1)) --去除已获取的分割串,得到还需要继续分割的字符串      
       END      
      ELSE      
       BEGIN      
         INSERT INTO @t VALUES(@substr,@i+1)--对最后一个被分割的串进行单独处理       
       END       
     SET @i=@i+1       
     END      
    END      
          
    RETURN       
    END    
    GO
  • 相关阅读:
    大型单机游戏画面帧数低,看着就不流畅 玩大型单机晕
    ssh无法启动 (code=exited, status=255)
    Log4Net
    ASP.NET 获取客户端IP地址
    sql 存储过程 输出参数 输入参数
    JSON资料整理
    test
    SQL SERVER调优常用方法 sql优化
    asp.net 获取网站根目录总结 Global.asax文件里获取获取网站根目录
    asp.net web 定时执行任务 定时器 Global.asax
  • 原文地址:https://www.cnblogs.com/cnajian/p/2060112.html
Copyright © 2011-2022 走看看