使用XQuery的nodes()方法实现字符拆分

比如一串字符以某定义符号分隔,现我们需要以定义符号对这串字符进行拆分。可以使用XQuery的nodes()方法来实现。实现可参考到这篇:http://www.cnblogs.com/insus/archive/2012/02/25/2367743.html 。不过Insus.NET把实现的方法写成一个自定义函数,在需要的地方调用即可。

udf_StringSplit
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
--
 Author:        Insus.NET
--
 Create date: 2012-02-26 00:15:00
--
 Description:    Split the string from the delimiter
--
 =============================================
CREATE FUNCTION [dbo].[udf_SplitString]
(
    @Value NVARCHAR(MAX),
    @Delimiter CHAR(1)

RETURNS @SplitResult TABLE ([ID] INT IDENTITY(1,1),[WORD] NVARCHAR(MAX))
AS
BEGIN
    DECLARE @xml XML = CAST('<insus>' + REPLACE(@Value,@Delimiter,'</insus><insus>'+ '</insus>' AS XML)
    INSERT INTO @SplitResult([WORD]SELECT n.value('.','NVARCHAR(50)'AS w
    FROM @xml.nodes('/insus'AS E(n)
  RETURN
END

 

应用自定义函数:

SELECT [ID],[WORD] FROM [dbo].[udf_SplitString]('ad;gdf;gdf;gdf;dfsdf',';')

 

执行结果:

 

posted @ 2012-02-26 00:15  Insus.NET  阅读(1366)  评论(0编辑  收藏  举报