2016-02-05 3 views
0

Я следующую структуру XML в столбце в таблице:значение Анализировать из XML с помощью MSSQL

<font class="nav"> 
    <a onMouseOver="ShowMenu(event, '107349267', 'yes', '431539056')" href="#" onMouseout="delayhidemenu()"> 
    <b>107349267</b> 
    </a> 
</font> 

Я комфортно с разбора большинство родительского дочерних узлов, но я не в состоянии видеть, как я могу:

SELECT 
    cast(TransactionId as xml).value('(/font class//b/node())[1]',  'nvarchar(max)') as TransId 
    FROM dbo.TableA 

любая помощь?

+0

понял это: – user130045

ответ

0

Фигурные это:

CREATE FUNCTION [dbo].[ParseHTMLFromString] 
(
@HTML_STRING VARCHAR(MAX) -- Variable for string 
) 
RETURNS VARCHAR(MAX) 
BEGIN 

DECLARE @STRING VARCHAR(MAX) 
Declare @Xml AS XML 
SET @Xml = CAST(('<A>'+ REPLACE(REPLACE(REPLACE(REPLACE(@HTML_STRING 
    ,'<','@*'),'>','!'),'@','</A><A>'),'!','</A><A>') +'</A>') AS XML) 

;WITH CTE AS (SELECT A.value('.', 'VARCHAR(MAX)') [A] 
    FROM @Xml.nodes('A') AS FN(A) WHERE CHARINDEX('*', 
    A.value('.', 'VARCHAR(MAX)'))=0 
    AND ISNULL(A.value('.', 'varchar(max)'),'')<>'') 

SELECT @STRING=STUFF((SELECT ' ' + [A] FROM CTE FOR XML PATH('')),1,1,'') 
RETURN @STRING 
END 
Смежные вопросы