首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一sql函数,求字符串截取,该如何解决

2012-04-26 
求一sql函数,求字符串截取表http://www.xx.com/http://a.b.c.com/http://a.x.com.cn/http://a.c.net.cn/ht

求一sql函数,求字符串截取

http://www.xx.com/
http://a.b.c.com/
http://a.x.com.cn/
http://a.c.net.cn/
http://a.w.net/
http://a.s.cn/

如上表所示,每一条记录根据.拆分,从后向前,直到不等于com/cn/net结束并返回
xx
c
x
c
w
s

大家能明白我的意思吧,就是求网址的最主要那部分,不要最后的域名,也不要前面的二级域名、三级域名等等,求一函数。

[解决办法]

SQL code
select   s= right(a, charindex('.',REVERSE(a))-1 ) from (    select a= left(a, (case when charindex('.com', a)>0 then charindex('.com', a)-1        when charindex('.net', a)>0 then charindex('.net', a)-1        when charindex('.cn', a)>0 then charindex('.cn', a)-1        else len(a) end    ))    from (        select         a = replace(replace(a,'http://',''),'/','')        from (            select a='http://www.xx.com/' union all            select a='http://a.b.c.com/' union all            select a='http://a.x.com.cn/' union all            select a='http://a.c.net.cn/' union all            select a='http://a.w.net/' union all            select a='http://a.s.cn/'        ) t0    ) t1) t2
[解决办法]
SQL code
DROP TABLE tbeCREATE TABLE tbe(    url VARCHAR(100))GOINSERT INTO tbeSELECT 'http://www.xx.com/' UNIONSELECT 'http://a.b.c.com/' UNIONSELECT 'http://a.x.com.cn/' UNIONSELECT 'http://a.c.net.cn/' UNIONSELECT 'http://a.w.net/' UNIONSELECT 'http://a.s.cn/'IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'suburl')BEGIN    DROP FUNCTION suburlENDGOCREATE FUNCTION suburl (@URL VARCHAR(100))RETURNS VARCHAR(100)ASBEGINDECLARE @Suburl VARCHAR(100)IF CHARINDEX('.COM',@URL) > 0BEGIN    SET @Suburl = LEFT(@URL,CHARINDEX('.COM',@URL) - 1)    WHILE CHARINDEX('.',@Suburl) > 0    BEGIN        SET @Suburl = RIGHT(@Suburl,LEN(@Suburl) - CHARINDEX('.',@Suburl))    ENDENDELSE IF CHARINDEX('.NET',@URL) > 0BEGIN    SET @Suburl = LEFT(@URL,CHARINDEX('.NET',@URL) - 1)    WHILE CHARINDEX('.',@Suburl) > 0    BEGIN        SET @Suburl = RIGHT(@Suburl,LEN(@Suburl) - CHARINDEX('.',@Suburl))    ENDENDELSE IF CHARINDEX('.CN',@URL) > 0BEGIN    SET @Suburl = LEFT(@URL,CHARINDEX('.CN',@URL) - 1)    WHILE CHARINDEX('.',@Suburl) > 0    BEGIN        SET @Suburl = RIGHT(@Suburl,LEN(@Suburl) - CHARINDEX('.',@Suburl))    ENDENDRETURN @SuburlENDGOSELECT DBO.suburl(URL)FROM tbe(No column name)ccswxxx 

热点排行