2016版本的 字符串分割函数

--1. 创建fn_Split函数. ( 切分字符串, 返回一个列名为id的表 )  

IF EXISTS(

       SELECT *

       FROM   dbo.sysobjects

       WHERE  id = OBJECT_ID('fn_Split')

              AND (TYPE = 'FN' OR TYPE = 'TF' OR TYPE = 'IF')

   )

    DROP FUNCTION fn_Split  

GO  

   

CREATE FUNCTION [dbo].[fn_Split]

(

    @str           VARCHAR(MAX),

    @separator     VARCHAR(10)

)

RETURNS TABLE

AS

    RETURN 

    (

        --Example:  SELECT id FROM fn_Split('a,b,d,c',',')  

        SELECT B.id

        FROM   (

                   (

                          --A 的作用只是生成 '<v>a</v><v>b</v><v>d</v><v>c</v>' 的XML格式的数据, 提供数据源 

                       SELECT [value] = CONVERT(XML, '<v>' REPLACE(@str, @separator, '</v><v>') + '</v>')

                   ) A 

                   OUTER APPLY

                   (

                          --B 的作用是将A中的 XML 数据的值枚举出来转换成行

                       SELECT id = N.v.value('.''varchar(100)'FROM   A.[value].nodes('/v') N(v)

                   ) B

               )

    )

GO

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值