sqlserver如何查询某段前后关键字之间的内容筛选

比如有个表内容数据格式是这样的
aaa$$bbb$http://abc.xxx.com$aaa
aaa$$bbb$http://abc.xxx.com$aaa
aaa$$bbbb$http://abc.xxx.com$aaa
aaa$$bbbb$http://abc.xxx.com$aaa
aaa$$bbb$http://abc.xxx.com$aaa
aaa$$bbb$http://abc.xxx.com$aaa
aaa$$bbb$http://abc.xxx.com$aaa
aaa$$bbb$http://abc.xxx.com$aaa
aaa$$bbbb$http://abc.xxx.com$aaa
aaa$$bbbb$http://abc.xxx.com$aaa

我想把http://abc.xxx.com 或者 abc.xxx.com 或者是xxx.com 的内容取出来,
试过网上的办法但效果不理想 ,我这个里面的bbb bbbb 不固定,会出现偏差
有什么办法可以 截取 开头http:// 与$aaa结尾 只提取 abc.xxx.com的办法吗

我这里帮你处理了你的问题,希望能帮助你
1、创建表及添加数据
CREATE TABLE test (
id int(11) NOT NULL AUTO_INCREMENT,
address varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
INSERT INTO test VALUES (1, 'aaa$$bbb$http://abc.xxx.com$aaa');
INSERT INTO test VALUES (2, 'aaa$$bbb$http://abc.xxx.com$aaa');
INSERT INTO test VALUES (3, 'aaa$$bbbb$http://abc.xxx.com$aaa');
INSERT INTO test VALUES (4, 'aaa$$bbbb$http://abc.xxx.com$aaa');
INSERT INTO test VALUES (5, 'aaa$$bbb$http://abc.xxx.com$aaa');
INSERT INTO test VALUES (6, 'aaa$$bbb$http://abc.xxx.com$aaa');
INSERT INTO test VALUES (7, 'aaa$$bbb$http://abc.xxx.com$aaa');
INSERT INTO test VALUES (8, 'aaa$$bbbb$http://abc.xxx.com$aaa');
INSERT INTO test VALUES (9, 'aaa$$bbbb$http://abc.xxx.com$aaa');
2、编写sql查询你想要的数据
SELECT SUBSTRING(address,LOCATE('http://', address,1)+7,
LOCATE('$', address,LOCATE('http://', address,1)+1) - (LOCATE('http://', address,1)+7))
FROM test;
3、结果贴图
图片说明

找不到存储过程 'LOCATE'。 这个是什么情况 我用的是 sql2005

CREATE TABLE #test (
webaddress varchar(2000)
)
INSERT INTO #test VALUES ( 'aaa$$bbb$http://abc.xxx.com$aaa');
INSERT INTO #test VALUES ( 'aaa$$bbb$http://abc.xxx.com$aaa');
INSERT INTO #test VALUES ( 'aaa$$bbbb$http://abc.xxx.com$aaa');
INSERT INTO #test VALUES ( 'aaa$$bbbb$http://abc.xxx.com$aaa');
INSERT INTO #test VALUES ( 'aaa$$bbb$http://abc.xxx.com$aaa');
INSERT INTO #test VALUES ( 'aaa$$bbb$http://abc.xxx.com$aaa');
INSERT INTO #test VALUES ( 'aaa$$bbb$http://abc.xxx.com$aaa');
INSERT INTO #test VALUES ( 'aaa$$bbbb$http://abc.xxx.com$aaa');
INSERT INTO #test VALUES ( 'aaa$$bbbb$http://abc.xxx.com$aaa');

select webaddress,
substring(webaddress,CHARINDEX('http://',webaddress)+7,CHARINDEX('com',webaddress)+2-CHARINDEX('http://',webaddress)-6) as newaddress
from #test

drop table #test
图片说明