0

我一直在尝试查找如何仅在 SQL Server 的字段(HTML 代码)中查询段落的第一句,但我无法找到方法。我找到了使用 MySQL 的解决方案,SUBSTRING_INDEX并且我还找到了返回一定数量的单词/字符但不使用特定分隔符的解决方案。

我的字段存储为 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 中断可能是最好的分隔符,因为某些句子可能以冒号结尾。

先感谢您!我希望我能很好地解释这个场景。

4

1 回答 1

0

我意识到这很丑陋,但假设第一个<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功能;我的测试数据库区分大小写,因此需要使大小写一致。

于 2012-10-01T19:08:59.783 回答