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

时间:2021-04-16 19:41:58

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

使用XQuery的nodes()方法实现字符拆分使用XQuery的nodes()方法实现字符拆分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 ', ' ; ')

 

执行结果:

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