查询SQL Server/Access前端中HTML段落字段的第一句话

查询SQL Server/Access前端中HTML段落字段的第一句话,html,sql,sql-server,Html,Sql,Sql Server,我一直试图找到如何在SQL Server字段(HTML代码)中只查询段落的第一句话,但找不到方法。我已经找到了使用子字符串\u索引的MySQL解决方案,我还找到了返回一定数量的单词/字符但不使用特定分隔符的解决方案 我的字段存储为HTML,示例如下: <html><body>Enter the following page information.<br><br> <b>Display #:</b> 1 [Automatic

我一直试图找到如何在SQL Server字段(HTML代码)中只查询段落的第一句话,但找不到方法。我已经找到了使用
子字符串\u索引的MySQL解决方案,我还找到了返回一定数量的单词/字符但不使用特定分隔符的解决方案

我的字段存储为HTML,示例如下:

<html><body>Enter the following page information.<br><br>
<b>Display #:</b> 1 [Automatically Populated]<br>
<b>Start Page: </b> 1 [Automatically Populated]<br>
<b>DCI Name:</b>  DEMOG<br>
<b>Clinical Planned Event:</b>  BASELINE1<br>
<font color="#0070C0">TAKE A SCREENSHOT</font>.<br>
</body></html>
输入以下页面信息。

显示#:1[自动填充]
起始页:1[自动填充]
DCI名称:DEMOG
临床计划事件:基线1
截图。
在本例中,我希望只返回/查询“输入以下页面信息”,而不是段落的其余部分。我假设HTML分隔符可能是最好的分隔符,因为有些句子可能以冒号结尾


提前谢谢你!我希望我对这个场景解释得足够好。

我意识到这很难看,但假设第一个

是这一行的结尾,这应该在SQL Server后端工作:

DECLARE @x nvarchar(200)
SET @x = '<html><body>Enter the following page information.<br><br><b>Display #:</b>'

SELECT substring(@x,

    (charindex('<br>', lower(@x)) - 1) - 
        (charindex('>', REVERSE(LEFT(@x, charindex('<br>', lower(@x)) - 1))))+2,

    charindex('>', REVERSE(LEFT(@x, charindex('<br>', lower(@x)) - 1))) - 1

)
DECLARE@x nvarchar(200)
设置@x='输入以下页面信息。

显示: 选择子字符串(@x, (charindex(“
”,下(@x))-1) (charindex('>',反面(左(@x,charindex('
',下(@x))-1))+2, charindex('>',反面(左(@x,charindex('
',下(@x))-1))-1 )
基本上,我们在第一个

之前的字符串中找到
的最后一个实例,然后在末尾找到

,并取两者之间的长度差

这完全可以写在函数中,但我选择使用纯T-SQL来避免使用函数


最后一点注意:您可能不需要
lower
功能;我的测试数据库区分大小写,因此需要使大小写保持一致。

Oy,为什么HTML输出会像存储在数据库中那样?这是由基于web的应用程序驱动的,特别是:HP Quality Center。呵呵,我不羡慕。)看起来你有一个很好的解决方案要尝试!谢谢-但是对于我提供的一个示例来说,这似乎是静态的。我有很多行数据,它们有不同的HTML段落(不同的单词,一些以冒号结尾,句号…等等),我主要是寻找一种动态的方式,只返回段落的第一句话,以便于报告。虽然让它更复杂,我只是意识到,如果我只是把第一句话拉到HTML中断,它不会很好地转换为我的报告中的富文本,因为它不会有结束HTML语句来保持它的干净。哟!我不认为它是静态的;查询将在第一个


前面的最后一个标记之间查找文本。这应该去掉第一个示例中的前导
。其目的是通过在
SELECT
语句中使用此变量来替换硬编码的
@x
变量。你用不同的值试过了吗?哦,是的,对不起,我反应很快-我会用不同的值试一下,然后回复你!谢谢这是完美的-它正是我需要的!非常感谢你!