zoukankan      html  css  js  c++  java
  • 字符串分割自定义函数(SQL)

    今天博客园中看到一朋友写的SQL中分割字符串函数:
    http://www.cnblogs.com/czwand/archive/2007/11/21/966910.html
    在回帖中看到一朋友说到:
    select * from dbo.split('01__02__03','__')
    发生错误,返回的结果不是我们原本要的结果:
    -------------------
    --想要的结果
    01
    02
    03
    -----------------
    --实际结果:
    01
    _02
    _03

    以前我也写过类似的字符串分割自定义函数,也没有想过上面出现的这样问题。
    我原来的函数是这样的:

    /*
    StringToTable
    */
    CREATE FUNCTION StringToTable(@StringX varchar(8000),@Split nvarchar(10))
    RETURNS @TableResult TABLE(TableID nvarchar(20))
    AS  
    BEGIN
        DECLARE @Index int
        SET @Index=CHARINDEX(@Split,@StringX,1)
        WHILE (@Index>=1)
            BEGIN
                INSERT INTO @TableResult SELECT LEFT(@StringX,@Index-1)
                SELECT

    @StringX=RIGHT(@StringX,LEN(@StringX)-@Index),@Index=CHARINDEX(@Split,@StringX,1)
            END    
        IF(@StringX<>'') INSERT INTO @TableResult SELECT @StringX
        RETURN
    END



    使用类似的select * from dbo.split('01__02__03','__') 一样出问题。
    经过一下的修改就可以了,修改后程序为:

    /*
    StringToTable
    */
    CREATE FUNCTION StringToTable(@StringX varchar(8000),@Split nvarchar(10))
    RETURNS @TableResult TABLE(TableID nvarchar(20))
    AS  
    BEGIN
        DECLARE @Index int
        DECLARE @LenIndex int
        SELECT @LenIndex=LEN(@Split),@Index=CHARINDEX(@Split,@StringX,1)
        WHILE (@Index>=1)
            BEGIN
                INSERT INTO @TableResult SELECT LEFT(@StringX,@Index-1)
                SELECT

    @StringX=RIGHT(@StringX,LEN(@StringX)-@Index-@LenIndex+1),@Index=CHARINDEX(@Split,@Stri

    ngX,1)
            END    
        IF(@StringX<>'') INSERT INTO @TableResult SELECT @StringX
        RETURN
    END






  • 相关阅读:
    docker 目录移动到其他磁盘的操作
    linux -- 查看磁盘空间的大小 查看文件夹占用磁盘空间大小
    python flask 反向代理
    shell 脚本换行符的问题
    uniapp使用web-view跳转vue单页面通信,互发消息
    java基础(多线程---lambda)
    SpringBoot开发详解(五)--Controller接收参数以及参数校验
    使用 TypeScript 来开发 React 的注意事项
    video标签通过js实现增加倍速播放功能
    zblog调取置顶文章
  • 原文地址:https://www.cnblogs.com/wghao/p/980996.html
Copyright © 2011-2022 走看看