mssql sqlserver 使用sql脚本获取字符串存在多少个网址(url地址)的方法分享


摘要:
下文讲述获取一个字符串中存在多少个网址的方法,如下
实验环境:sql server 2008 R2



实现思路:
1.新建一个自定义函数,可将单个字符串拆分为含单个网址的数据表
2.采用outer apply将源数据表和函数进行相关的连接

例:

 
    
---创建字符串分解函数-将字符串转换为数据表
create Function stringChangeTable(@tmp varchar(max)) 
Returns @tab Table 
( 
info varchar(50) 
) 
As 
Begin 
set @tmp = @tmp+',' 
Declare @Istr varchar(50)    --截取后的第一个字符串 
Declare @strTmp varchar(max)  --截取第一个字符串后剩余的字符串 
set @Istr = left(@tmp,charindex(',',@tmp)-1) 
set @strTmp = stuff(@tmp,1,charindex(',',@tmp),'') 
Insert @tab Values(@Istr) 
while(len(@strTmp)>0) 
begin 
set @Istr = left(@strTmp,charindex(',',@strTmp)-1) 
Insert @tab Values(@Istr) 
set @strTmp = stuff(@strTmp,1,charindex(',',@strTmp),'') 
end 
Return 
End

go



CREATE TABLE [maomao365]
(
    keyId int identity(1,1),
	url   varchar(888)
)
go

insert into [maomao365](url)
values
('http://www.maomao365.com,http://www.163.com'),
('http://www.linux28.com,http://www.qq.com'),
('http://www.baidu.com,http://www.cnblogs.com'),
('http://www.google.com,http://www.dch.com')
go

 
SELECT *  FROM [maomao365] OUTER APPLY dbo.stringChangeTable(url) 

go

truncate table [maomao365]
drop     table [maomao365]

go

drop function dbo.stringChangeTable

mssql_sqlserver_字符串分解_8657

mssql_sqlserver_字符串分解_8657