分割字符串

本文介绍了一个SQL Server用户定义函数(Get_StepCode_Tab),该函数用于将输入的工序字符串(A,B,C,D)拆分成多行记录,每行包含一个工序代码及对应的ID。通过示例展示了如何使用此函数来实现字符串到表格数据的转换。
USE [SoyErp]
GO
/****** Object:  UserDefinedFunction [dbo].[Get_StepCode_Tab]    Script Date: 2017/4/22 21:55:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO






ALTER  FUNCTION [dbo].[Get_StepCode_Tab]
    (
      @StepCode VARCHAR(4000) -- nvarchar(4000)工序字符串
    )
RETURNS @SplitStringsTable TABLE
    (
      [id] INT ,
      [Value] VARCHAR(800)
    )
AS 
    BEGIN
    ---***分割工序+++++++++++++++++++++++++++++++++++++++++++++***-
        DECLARE @status VARCHAR(500) ;
        DECLARE @status2 VARCHAR(500) ;
        DECLARE @N INT ;
        DECLARE @SN INT ;
        SET @StepCode=REPLACE(@StepCode,' ','')
        SET @N = LEN(@StepCode) - LEN(REPLACE(@StepCode, ',', '')) 
        SET @SN = 1     
        WHILE @SN <= @N 
            BEGIN          
                SET @status2 = LEFT(@StepCode, CHARINDEX(',', @StepCode) - 1) 
    
                INSERT  INTO @SplitStringsTable
                        ( id, Value )
                        SELECT  @SN ,
                                @status2
                SELECT  @SN = @SN + 1 ,
                        @StepCode = STUFF(@StepCode, 1,
                                          CHARINDEX(',', @StepCode), '')
            END
        INSERT  INTO @SplitStringsTable
                ( id, Value )
                SELECT  @SN ,
                        @StepCode    
        RETURN ;
    END

 

 

功能实现:“A,B,C,D" 

SELECT * FROM  dbo.[Get_StepCode_Tab]('A,B,C,D')

结果 id Value
1 A
2 B
3 C
4 D

转载于:https://www.cnblogs.com/ChineseMoonGod/p/6749882.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值