如何合并和拆分文本

有时, 需要合并,拆分文本,其实,方法很多.

以下,合并使用apply,拆分使用clr函数,用一个cte体现:

use AdventureWorksDW2008R2
go
with t(id,name) as (
select c.ProductCategoryKey, b.name  
from dbo.DimProductCategory c  
cross apply(  
select ','+CONVERT(nvarchar(20),s.EnglishProductSubcategoryName)  
from dbo.DimProductSubcategory s  
where c.ProductCategoryKey=s.ProductCategoryKey  
order by  
s.EnglishProductSubcategoryName  
for xml path (''),type  
) a(n)  
cross apply(  
select STUFF(a.n.value('./text()[1]','nvarchar(max)')  
,1,1,'')  
) b(name)  
)
select t.id,name,pos,element from t
cross apply CLRUtilities.dbo.SplitCLR(name,',')


结果如下:

如何合并和拆分文本_第1张图片

看以下执行计划:

如何合并和拆分文本_第2张图片

如何合并和拆分文本_第3张图片

clr函数要快于xml,udf.

提示:

需要注意的是,使用vs2010自动创建和部署clr到sql server,没有成功,主要问题是,创建assemblies可以, 创建函数错误,'cannot find type ?? in assemblies ??',

试验namespace,[]等方法,没有解决.最后, sql server 手动创建成功.

你可能感兴趣的:(合并)