SQL-解析列中的HTML数据
我有一个名为Message的列。在本栏中有一个数据是HTML代码。我需要在SQL中解析这个HTML,然后将它拆分为5个不同的列名-姓氏-电子邮件-电话-消息。这里是我需要解析的HTML格式SQL-解析列中的HTML数据,html,sql,Html,Sql,我有一个名为Message的列。在本栏中有一个数据是HTML代码。我需要在SQL中解析这个HTML,然后将它拆分为5个不同的列名-姓氏-电子邮件-电话-消息。这里是我需要解析的HTML格式 <html> <body> <br><br> <table> <tr> <td>NameSurname</td> &l
<html>
<body>
<br><br>
<table>
<tr>
<td>NameSurname</td>
<td>kaydi peldi sord</td>
</tr>
<tr>
<td>Email</td>
<td>...@gmail.com</td>
</tr>
<tr>
<td>Telephone</td>
<td>535...5464</td>
</tr>
<tr>
<td colspan=2>Message</td>
</tr>
<tr>
<td colspan=2>Benfica-Fenerbahçe</td>
</tr>
</table>
</body>
</html>
首先,将nameurname拆分为Name和姓氏。该规则从本示例的最后一个空格中拆分,它应该命名为:Ejeder mehmet,姓氏:sıkık,然后直接插入其他列。我该怎么做?谢谢你的回答 我迟到了一年,这不漂亮,而且肯定不是100%安全,但在我需要解析HTML的罕见情况下,这对我来说是一件好事。首先创建这个函数
CREATE FUNCTION dbo.StringBetweenTwoPatterns (@PrePattern varchar(max) @PostPattern varchar(max), @string varchar(max))
RETURNS varchar(Max)
AS
BEGIN
DECLARE @WildPre VARCHAR(MAX) = '%' + @PrePattern + '%'
DECLARE @WildPost VARCHAR(MAX) = '%' + @PostPattern + '%'
IF PATINDEX(@WildPre, @String) > 0
AND PATINDEX(@WildPost, @String) > 0
BEGIN
DECLARE @RIGHT VARCHAR(MAX) = SUBSTRING(@string, PATINDEX(@WildPre,@string) + LEN(@PrePattern), LEN(@string))
RETURN LEFT(@RIGHT,(PATINDEX(@WildPost,@RIGHT) - 1))
END
RETURN NULL
END
GO
调用此函数时,必须在搜索字符串中保留完整的格式和空白,因此如下所示:
SELECT [NameSurname] = StringBetweenTwoPatterns('<td>NameSurname</td>
<td>','</td>',[Message]
拆分姓名和姓氏应该能够从上面的子字符串、右、左和patindex示例中推断出来。或者用谷歌搜索其他答案。这并不是对你心中渴望的网站的真正要求,而是帮助那些真正愿意学习的用户。正如JSG所建议的,不要这样做。要么把它拿出来,用专门用来解析HTML的东西来解析它,比如PHP,或者,更好的做法是,当你把消息插入数据库时,把它拆分并存储各个部分。这不是为网站设计的。它是SSIS包。我们从其他公司检索数据。所以我必须在SQL中完成。在SSIS包中创建一个代码步骤,并在VB/CYeah中完成。让其他类似PHP的东西获取您获得的数据,将其分解为适当的部分,并在这样做时,让它将单个查询逐行写入文本文件。然后,完成后,在数据库中运行查询并对其进行更新。希望您的原始数据在字段之间有某种分隔符。