求一条sql语句,替换所有网址

D6Space 2010-12-21 03:50:13
数据表中一个字段url可能的形式如下
http://www.abc.com
http://www.bcd.com/
http://www.cab.com/a/b/c/index.aspx


求一条语句把网址全部替换成空,结果如下
''
''
a/b/c/index.aspx
...全文
174 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
billpu 2010-12-21
  • 打赏
  • 举报
回复
SELECT 
REPLACE(REPLACE(SUBSTRING(REPLACE(REPLACE(web+'/','http://',''),'//','/'),CHARINDEX('.com',REPLACE(REPLACE(web+'/','http://',''),'//','/'))+5,1000)+'/','//','/')+'/','//','')
FROM tb
D6Space 2010-12-21
  • 打赏
  • 举报
回复
都是高手,牛逼!小弟佩服!!
王向飞 2010-12-21
  • 打赏
  • 举报
回复
SELECT * 
,STUFF([yuiuyi],1,CHARINDEX('.net',[yuiuyi])+4,'')
FROM [TB]
D6Space 2010-12-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wxf163 的回复:]
SQL code

--> 数据库版本:
--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
--> 测试数据:[TB]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]')
AND type in (N'U'))
DROP TABLE……
[/Quote]


牛逼,但是要是.net不是.com呢?
xman_78tom 2010-12-21
  • 打赏
  • 举报
回复

declare @t table(s varchar(256));
insert into @t
select 'http://www.abc.com' union all
select 'http://www.abc.com/' union all
select 'http://www.abc.com/a/b/c/index.aspx';

select STUFF(s,1,
(case when CHARINDEX('/',s,8)>0 then CHARINDEX('/',s,8) else LEN(s) end),
'') from @t;
dawugui 2010-12-21
  • 打赏
  • 举报
回复
create table tb(col varchar(100))
insert into tb values('http://www.abc.com')
insert into tb values('http://www.abc.com/')
insert into tb values('http://www.abc.com/a/b/c/index.aspx')
go

--查询
select '' col from tb where charindex('/',substring(col,8,len(col))) = 0
union all
select substring(substring(col,8,len(col)),charindex('/',substring(col,8,len(col))) + 1,len(col)) col from tb where charindex('/',substring(col,8,len(col))) > 0
/*
col
-------------------------


a/b/c/index.aspx

(所影响的行数为 3 行)
*/

--更新
update tb set col = case when charindex('/',substring(col,8,len(col))) = 0 then ''
else substring(substring(col,8,len(col)),charindex('/',substring(col,8,len(col))) + 1,len(col))
end

select * from tb
/*
col
-------------------------


a/b/c/index.aspx

(所影响的行数为 3 行)
*/

drop table tb
dawugui 2010-12-21
  • 打赏
  • 举报
回复
create table tb(col varchar(100))
insert into tb values('http://www.abc.com')
insert into tb values('http://www.abc.com/')
insert into tb values('http://www.abc.com/a/b/c/index.aspx')
go

--查询
select '' col from tb where charindex('/',substring(col,8,len(col))) = 0
union all
select substring(substring(col,8,len(col)),charindex('/',substring(col,8,len(col))) + 1,len(col)) col from tb where charindex('/',substring(col,8,len(col))) > 0

drop table tb

/*
col
----------------------------------------------------------------------------------------------------


a/b/c/index.aspx

(所影响的行数为 3 行)
*/
王向飞 2010-12-21
  • 打赏
  • 举报
回复

--> 数据库版本:
--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
--> 测试数据:[TB]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]')
AND type in (N'U'))
DROP TABLE [TB]
GO

---->建表
create table [TB]([yuiuyi] varchar(35))
insert [TB]
select 'http://www.abc.com' union all
select 'http://www.bcd.com/' union all
select 'http://www.cab.com/a/b/c/index.aspx'
GO



--> 查询结果
SELECT *
,STUFF([yuiuyi],1,CHARINDEX('.com',[yuiuyi])+4,'')
FROM [TB]
--> 删除表格
--DROP TABLE [TB]

D6Space 2010-12-21
  • 打赏
  • 举报
回复
补充:www.abc.com 不是固定的,也可能是www.bcd.com或www.cab.com 都有可能,绝不是 replace('http://www.abc.com','')这么简单

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧