zoukankan      html  css  js  c++  java
  • MS SQL 字符拆分存处理

    MS SQL Server没有split()函数,但是我们可以写一个Table-valued Functions定义函数[dbo].[udf_SplitStringToTable] :


    CREATE FUNCTION [dbo].[udf_SplitStringToTable] 
    ( 
        @string NVARCHAR(MAX), 
        @delimiter CHAR(1) 
    ) 
    RETURNS @result TABLE([ID] INT IDENTITY(1,1),value NVARCHAR(MAX) 
    ) 
    BEGIN 
        DECLARE @start INT, @end INT 
        SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) 
        WHILE @start < LEN(@string) + 1 
        BEGIN 
            IF @end = 0  
                SET @end = LEN(@string) + 1
           
            INSERT INTO @result (value) VALUES (SUBSTRING(@string, @start, @end - @start)) 
            SET @start = @end + 1 
            SET @end = CHARINDEX(@delimiter, @string, @start)        
        END 
        RETURN 
    END
    Source Code


    再写另外一个Scalar-valued Function自定义函数[dbo].[udf_SplitString]:



    CREATE FUNCTION [dbo].[udf_SplitString]
    (
        @string NVARCHAR(MAX), 
        @delimiter CHAR(1),
        @index INT
    )
    RETURNS NVARCHAR(MAX)
    AS
    BEGIN
        DECLARE @rtn NVARCHAR(MAX)
        SELECT @rtn = [value] FROM [dbo].[udf_SplitStringToTable] (@string,@delimiter) WHERE [ID] = @index
        RETURN @rtn
    END
    GO
    Source Code


    上面代码示例中@index参数即是你想获取第几个字符串,举个例子吧:


  • 相关阅读:
    codna的安装与使用
    ubuntu 下修改MySQL 的root用户密码
    python中的排序
    CF 543C Remembering Strings
    CF 1119C Ramesses and Corner Inversion
    HihoCoder 1384 Genius ACM
    BZOJ3032 七夕祭
    Vjudge Code
    CF51C Three Base Stations
    Sumdiv POJ 1845
  • 原文地址:https://www.cnblogs.com/insus/p/5871999.html
Copyright © 2011-2022 走看看