讲解SQL Server2005数据项的分拆与合并(2)

日期: 2008-06-29 作者:Victor 来源:TechTarget中国

示例:


SET NOcount ON


create TABLE ##Table([keyCol] varchar(3), [NewValues] varchar(max))


–原数据


select


[title_id]


,[title]


FROM [pubs].[dbo].[titles]


where [type] like ’p%’


–以title_id的前两个字符为参考键值,合并title到一个临时表中


insert INTO ##Table


&#101xecute [ChineseHoliday].[Helper].[joinValue]


@TableName = ’[pubs].[dbo].[titles]’


,@KeyColName = ’LEFT([title_id], 2)’


,@joinColName = ’’’《’’+[title] + ’’》’’’


,@Quote = ’,’


,@where = ’[type] like ’’p%’’’


–显示


select * FROM ##Table


–对临时表NewValues的值进行分拆


&#101xecute [ChineseHoliday].[Helper].[SpliteValues]


@TableName = ’##Table’


,@KeyColName = ’[keyCol]’


,@SpliteColName = ’[NewValues]’


,@Quote = ’,’


–删除临时表


drop TABLE ##Table


结果:


title_id title


——– ——————————————————————————-


PC1035 But Is It User Friendly?


PC8888 Secrets of Silicon Valley


PC9999 Net Etiquette


PS1372 Computer Phobic AND Non-Phobic Individuals: Behavior Variations


PS2091 Is Anger the Enemy?


PS2106 Life Without Fear


PS3333 Prolonged Data Deprivation: Four Case Studies


PS7777 Emotional Security: A New Algorithm



  keyCol NewValues


—— ——————————————


PC 《But Is It User Friendly?》,《Secrets of Silicon Valley》,《Net Etiquette》


PS 《Computer Phobic AND Non-Phobic Individuals: Behavior Variations》,《Is Anger the Enemy?》,《Life Without Fear》,《Prolonged Data Deprivation: Four Case Studies》,《Emotional Security: A New Algorithm》



  KeyCol NewValue


—— ——————————————


PC 《But Is It User Friendly?》


PC 《Secrets of Silicon Valley》


PC 《Net Etiquette》


PS 《Computer Phobic AND Non-Phobic Individuals: Behavior Variations》


PS 《Is Anger the Enemy?》


PS 《Life Without Fear》


PS 《Prolonged Data Deprivation: Four Case Studies》


PS 《Emotional Security: A New Algorithm》


继续:字符串的分拆


— =============================================


— Author: LzmTW


— create date: 20080108


— Description: 拆分字符串


— =============================================


create FUNCTION [Func].[Splite]


(


@Input nvarchar(max)


,@Quote nvarchar(max)


)


RETURNS


@Table TABLE


(


[ID] int identity(1,1) PRIMARY KEY


,[Value] nvarchar(max)


)


AS


BEGIN


insert @Table


select


[Value] = NewValue


FROM


(


select


SpliteCol = CONVERT(


xml


,N’’ + REPLACE(


@Input


,@Quote


,N’’) + N’’)


) a


OUTER APPLY


(


select NewValue = N.v.value(N’.’, ’nvarchar(max)’)


FROM SpliteCol.nodes(N’/root/v’) N(v)


) b



RETURN


END


示例:



  定义新行,



  create FUNCTION [Const].[NewLine]


(


)


RETURNS nchar(2)


AS


BEGIN



  DECLARE @Result nchar(2)



  select @Result = char(13) + char(10)



  RETURN @Result


END


 


DECLARE


@Input nvarchar(max)


,@Quote nvarchar(max)



  SET @Input = N’90


10


20


30


40


50


60’



  SET @Quote = [Const].NewLine()



  select * FROM [Func].[Splite] (@Input, @Quote)


结果



  ID Value


———– ——


1 90


2 10


3 20


4 30


5 40


6 50


7 60


(7 行受影响)

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

Victor
Victor

相关推荐

  • 在SQL Server 2005中实现网页传递变量(一)

    在网页传递变量,一般先编码,然后解码即可。如果在SQL 2000中实现这个方法,并不是件容易的事情,需要找到UrlEncode和UrlDecode原理,然后分析编码和解码字符串。

  • 在SQL Server 2005中实现网页传递变量(二)

    在网页传递变量,一般先编码,然后解码即可。如果在SQL 2000中实现这个方法,并不是件容易的事情,需要找到UrlEncode和UrlDecode原理,然后分析编码和解码字符串。

  • 走进SQL Server 2005:十大安全举措

    随着数据库系统被用作网络应用程序后台存储范围的持续扩大,对安全的关注也就越来越必要。虽然从发展的角度来看,围绕在SQL Server 2005的周围的还有不少的杂音,

  • SQL Server 2005:向系统表说再见

    在不使用任何的文档的情况下,编写一个查询,从SQL Server 2000系统表中抽取索引的列表,然后列举每个索引中的字段,并判断这个字段是否按照升序或者降序进行排序。