Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-解析列中的HTML数据_Html_Sql - Fatal编程技术网

SQL-解析列中的HTML数据

SQL-解析列中的HTML数据,html,sql,Html,Sql,我有一个名为Message的列。在本栏中有一个数据是HTML代码。我需要在SQL中解析这个HTML,然后将它拆分为5个不同的列名-姓氏-电子邮件-电话-消息。这里是我需要解析的HTML格式 <html> <body> <br><br> <table> <tr> <td>NameSurname</td> &l

我有一个名为Message的列。在本栏中有一个数据是HTML代码。我需要在SQL中解析这个HTML,然后将它拆分为5个不同的列名-姓氏-电子邮件-电话-消息。这里是我需要解析的HTML格式

<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的东西获取您获得的数据,将其分解为适当的部分,并在这样做时,让它将单个查询逐行写入文本文件。然后,完成后,在数据库中运行查询并对其进行更新。希望您的原始数据在字段之间有某种分隔符。