gpt4 book ai didi

sql - 如何从sql server中包含html内容的字段中提取文件名?

转载 作者:行者123 更新时间:2023-12-02 23:38:36 26 4
gpt4 key购买 nike

我们有一个 cms 系统,可以将 html 内容 block 写入 sql server 数据库。我知道这些 html 内容 block 所在的表名和字段名。一些 html 包含 pdf 文件的链接 ()。这是一个片段:

<p>A deferred tuition payment plan, 
or view the <a href="/uploadedFiles/Tuition-Reimbursement-Deferred.pdf"
target="_blank">list</a>.</p>

我需要从所有此类 html 内容 block 中提取 pdf 文件名。最后我需要得到一个列表:

Tuition-Reimbursement-Deferred.pdf
Some-other-file.pdf

该字段中的所有 pdf 文件名。

感谢任何帮助。谢谢。

更新

收到很多回复,非常感谢,但我忘了说我们这里仍然使用 SQL Server 2000。因此,这必须使用 SQL 2000 SQL 来完成。

最佳答案

创建此函数:

create function dbo.extract_filenames_from_a_tags (@s nvarchar(max))
returns @res table (pdf nvarchar(max)) as
begin
-- assumes there are no single quotes or double quotes in the PDF filename
declare @i int, @j int, @k int, @tmp nvarchar(max);
set @i = charindex(N'.pdf', @s);
while @i > 0
begin
select @tmp = left(@s, @i+3);
select @j = charindex('/', reverse(@tmp)); -- directory delimiter
select @k = charindex('"', reverse(@tmp)); -- start of href
if @j = 0 or (@k > 0 and @k < @j) set @j = @k;
select @k = charindex('''', reverse(@tmp)); -- start of href (single-quote*)
if @j = 0 or (@k > 0 and @k < @j) set @j = @k;
insert @res values (substring(@tmp, len(@tmp)-@j+2, len(@tmp)));
select @s = stuff(@s, 1, @i+4, ''); -- remove up to ".pdf"
set @i = charindex(N'.pdf', @s);
end
return
end
GO

使用该功能的演示:

declare @t table (html varchar(max));
insert @t values
('
<p>A deferred tuition payment plan,
or view the <a href="/uploadedFiles/Tuition-Reimbursement-Deferred.pdf"
target="_blank">list</a>.</p>'),
('
<p>A deferred tuition payment plan,
or view the <a href="Two files here-Reimbursement-Deferred.pdf"
target="_blank">list</a>.</p>And I use single quotes
<a href=''/look/path/The second file.pdf''
target="_blank">list</a>');

select t.*, p.pdf
from @t t
cross apply dbo.extract_filenames_from_a_tags(html) p;

结果:

|HTML                  |                                       PDF |
--------------------------------------------------------------------
|<p>A deferred tui.... | Tuition-Reimbursement-Deferred.pdf |
|<p>A deferred tui.... | Two files here-Reimbursement-Deferred.pdf |
|<p>A deferred tui.... | The second file.pdf |

SQL Fiddle Demo

关于sql - 如何从sql server中包含html内容的字段中提取文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16224687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com