zoukankan      html  css  js  c++  java
  • MSSQLSERVER数据库- 字符串分割函数返回类型表

    遇到这样一个问题,存储在数据库的数据是一串字符串如:1,2,3,4,5,6。想把这串字符串进行转变成一个表格,如下:

    1
    2
    3
    4
    5
    6

    就是这样一个问题,有人同事,写了一个这样的封装函数,这样就方便多了,使用方法如下:

    DECLARE @IdString nvarchar(max)
    Select @IdString=FMenu from dbo.T_Groups where Fgroupsid=1
    DECLARE @tTable TABLE ( tId int )
    INSERT @tTable ( tId ) select Item from dbo.Func_Splitstring(@IdString,',')

    字符串分割函数:

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    
    
     
    ALTER FUNCTION [dbo].[Func_Splitstring]
    (
        @IdList NVARCHAR(MAX),--传进来的Id列表
        @split VARCHAR(10) --分隔符号
    )
    --返回的临时表@table,以及字段Item
    RETURNS @table TABLE ( Item INT )
    AS
    BEGIN
        DECLARE @i INT 
        DECLARE @j INT
        
        SET @i = 1
        SET @j = 1
        
        WHILE(@i > 0)
        BEGIN
            SET @i = CHARINDEX(@split, @IdList, @j)
            IF(@i>0)
            BEGIN
                INSERT @table ( Item ) VALUES ( SUBSTRING(@IdList, @j, @i - @j))
            END
            ELSE
            BEGIN
                INSERT @table ( Item ) VALUES (SUBSTRING(@IdList, @j, LEN(@IdList) - @j + 1))
            END
            SET @j = @i + 1
        END
        RETURN
    END

     附:

    CHARINDEX 函数
    返回字符或者字符串在另一个字符串中的起始位置。
    CHARINDEX 函数调用方法如下:
    CHARINDEX ( expression1 , expression2 [ , start_location ] )
    Expression1 是要到 expression2 中寻找的字符中,start_location 是 CHARINDEX 函数开始在 expression2 中找expression1 的位置。
    CHARINDEX 函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如 CHARINDEX 没有找到要找的字符串,那么函数整数“0”。

  • 相关阅读:
    Centos6.8通过yum安装mysql5.7
    查看mysql已安装
    canal client leader
    es按时间段统计总数
    nginx负载
    es 查看mapping 设置max_result_window
    es 修改默认bool条件个数
    less
    Less配置环境
    JavaScript面向对象与原型
  • 原文地址:https://www.cnblogs.com/cxeye/p/3376357.html
Copyright © 2011-2022 走看看