电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > XML与XHTML教程 > 正文
利用xml在指定分隔符的情况下获取指定数据项的指定位置的串
利用xml在指定分隔符的情况下获取指定数据项的指定位置的串
2010-1-12 9:04:49  文/佚名   出处:电脑软硬件应用网   

-- 运行环境:


SELECT @@version


/*

-------------------------------------------------

Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86)

Apr 14 2006 01:12:25

Copyright (c) 1988-2005 Microsoft Corporation

Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4)

 

(1 行受影响)

*/


-- 加一个分隔函数:

create function F_split(

@s varchar(8000), --包含多个数据项的字符串

@pos int, --要获取的数据项的位置

@split varchar(10) --数据分隔符

)RETURNS varchar(100)

AS

BEGIN

IF @s IS NULL RETURN(NULL)

DECLARE @splitlen int --分隔符长度

SELECT @splitlen=LEN(@split+'a')-2

WHILE @pos>1 AND charindex(@split,@s+@split)>0

SELECT @pos=@pos-1,

@s=stuff(@s,1,charindex(@split,@s+@split)+@splitlen,'')

RETURN(nullif(left(@s,charindex(@split,@s+@split)-1),''))

END

GO

  
-- 数据准备


DECLARE @t TABLE(data varchar(50))

INSERT @t VALUES('10/20/30/50/40/90')

INSERT @t VALUES('1/2/3/5/4/9')

INSERT @t VALUES('10/5/60/33/12/1')

INSERT @t VALUES('10/8/3/60/55/20')

select dbo.F_split(data,3,'/') as col

from @t


/*


col

--------------------------------------------------

30

3

60

3

 

(4 行受影响)

*/

 

drop function F_split;

GO

-- 下面我们来试试用xml的语法完成上面的功能。

 

create function F_split(

@s varchar(8000), --包含多个数据项的字符串

@pos int, --要获取的数据项的位置

@split varchar(10) --数据分隔符

)RETURNS VARCHAR(100)

AS

BEGIN

DECLARE @RET VARCHAR(100)

SELECT @RET =

CAST(('<root><v>'+ REPLACE(@s,@split,'</v><v>')+'</v></root>'

) AS xml).

query('//v[position()=sql:variable("@pos")]').

value('.[1]','VARCHAR(max)')

return @ret

END

GO

 

-- 数据准备

DECLARE @t TABLE(data varchar(50))

INSERT @t VALUES('10/20/30/50/40/90')

INSERT @t VALUES('1/2/3/5/4/9')

INSERT @t VALUES('10/5/60/33/12/1')

INSERT @t VALUES('10/8/3/60/55/20')

select dbo.F_split(data,3,'/') as col

from @t

DROP FUNcTION F_split

/*

col

------------------------------

30

3

60

3

 

(4 行受影响)

*/

-- 对比两个函数,大家看看是不是XML很有意思呀!!

  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    XML的四种解析器原理及性能比较
    使用jquery的ajax解析xml的例子
    详解相互转换JSON-lib包的相关介绍
    教你使用quickwap的xml查询农历信息
    XML HTTP Request的属性和方法简介
    ASP生成XML数据文档的方法
    示范如何把XML读取数据放到内存
    使用DOM的技巧和诀窍总结
    兼容firefox与ie操作XML节点处理方法
    示例:asp读取xml文件的方法
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号