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



我一直在尝试查找如何仅查询SQL Server字段(HTML代码)中段落的第一句话,但找不到方法。我已经找到了使用SUBSTRING_INDEX的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>

在此示例中,我希望仅返回/查询"输入以下页面信息",而不是段落的其余部分。我假设 HTML 中断可能是最好的分隔符,因为某些句子可能以冒号结尾。

提前谢谢你!我希望我能很好地解释这个场景。

我意识到这是丑陋的罪恶,但假设第一个<br>是行的末尾,这应该在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
)

基本上,我们在第一个<br>之前找到字符串中>最后一个实例,然后在末尾找到<br>,并取两者之间的差作为长度。

这绝对可以在函数中写得更干净,但我选择使用纯 T-SQL 以避免使用函数。

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

最新更新