我有一个包含html详细信息的列,在每个列中,html包含不同的http链接。我需要找出每列中的所有http链接。
例如:第1栏第1行
html
...
a href = http://www.column1.com.......
img src=http://www.pic1.com/images/im.jpg...
...
/html
第1栏第2行
html
...
a href = http://www.column2.com.......
img src="http://www.pic2.com/images/im.jpg"....
/html
在结果中我需要获得以下列表:
任何人都可以帮我找到这个,因为我根本不知道该做什么,而且我不善于使用sql。
答案 0 :(得分:1)
您可以使用charindex
尝试找到http://
的索引,然后您需要找到网址的结尾(这取决于您的数据,空间或“)。
您还可以编写CLR标量函数,实现正则表达式查找
using System;
using System.Collections;
using System.Text.RegularExpressions;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public class CLR
{
[SqlFunction(FillRowMethodName = "FillRow")]
public static IEnumerable RegexMatch(string pattern, string text)
{
var r = new Regex(pattern);
return r.Matches(text);
}
public static void FillRow(Object obj, out SqlInt32 index, out SqlString match)
{
var m = (Match)obj;
index = new SqlInt32(m.Groups[0].Index + 1);
match = new SqlString(m.Groups[0].Value);
}
}
然后,您需要从此类库
在SQL Server上创建程序集create assembly CLR from 'C:\CLR.dll' with permission_set = safe
然后你可以创建功能
create function RegexMatch(@pattern nvarchar(4000), @text nvarchar(4000))
returns table ([index] int, match nvarchar(4000))
as external name CLR.CLR.RegexMatch