如何使用sys.dm_fts_parser拆分逗号(或任何分隔符)分隔的字符串?

时间:2012-11-26 04:28:03

标签: sql sql-server-2008

嗯,对于像

这样的给定输入
Name    MobileNumber
Name1   1111111111,22222222222,3333333333,4444444444
Name2   5555555555,6666666666

获取表格的输出

Name    splitdata
Name1   1111111111
Name1   22222222222
Name1   3333333333
Name1   4444444444
Name2   5555555555
Name2   6666666666

many ways要完成,例如

Declare @t Table (Name Varchar(10),MobileNumber Varchar(50))
Insert Into @t Values
('Name1','1111111111,22222222222,3333333333,4444444444'),
('Name2','5555555555,6666666666')

select F1.Name, 
 O.splitdata 
 from
 (
 select *,
 cast('<X>'+replace(F.MobileNumber,',','</X><X>')+'</X>' as XML) as xmlfilter
 from @t F
 )F1
 cross apply
 ( 
 select fdata.D.value('.','varchar(50)') as splitdata 
 from f1.xmlfilter.nodes('X') as fdata(D)) O

然而,我刚刚遇到sys.dm_fts_parser,并想到使用它实现同样但失败了。我的尝试

SELECT Name,display_term
 FROM @t
CROSS APPLY sys.dm_fts_parser('"' + MobileNumber + '"', 1033, 0,0)

有人可以帮我这样做吗?

1 个答案:

答案 0 :(得分:2)

解决。

where display_term NOT LIKE 'nn%'

完整查询

SELECT Name,display_term
FROM @t
CROSS APPLY sys.dm_fts_parser('"' + MobileNumber + '"', 1033, 0,0)
where display_term NOT LIKE 'nn%'