Home Forums SQL Server 2008 T-SQL (SS2K8) Trying to select XML data for one tag from an text field and isn't returning the data I need RE: Trying to select XML data for one tag from an text field and isn't returning the data I need

  • From the sample data provided by Lowell: -

    -- SAMPLE DATA

    IF object_id('tempdb..#yourTable') IS NOT NULL

    BEGIN

    DROP TABLE #yourTable;

    END;

    SELECT id, CAST(XMLProfile_TXT AS XML) AS XMLProfile_TXT

    INTO #yourTable

    FROM (VALUES(1, '<div class="MainMenu"><ul><li><did>Home</did></li><li><did>Tags</did></li><li><did>Articles</did></li><li><did>Editorials</did></li><li><did>Stairways</did></li>

    <li><did>Forums</did></li><li><did>Scripts</did></li><li><did>Videos</did></li><li><did>Blogs</did></li><li><did>QotD</did></li>

    <li><did class="track-clicks MenuItem "href="/Books/"data-event-category="MainMenu: Books">Books</did></li>

    <li><did class="track-clicks MenuItem "href="http://ask.sqlservercentral.com"data-event-category="MainMenu: Ask SSC">Ask SSC</did></li>

    <li><did class="track-clicks MenuItem "href="http://jobs.sqlservercentral.com/"data-event-category="MainMenu: SQL Jobs">SQL Jobs</did></li>

    <li><did class="track-clicks MenuItem "href="/Training/"data-event-category="MainMenu: Training">Training</did></li>

    <li><did class="track-clicks MenuItem "href="/Authors/Articles/"data-event-category="MainMenu: Authors">Authors</did></li>

    <li><did class="track-clicks MenuItem Minor"href="ssc_showPostsSinceLastVisit()"data-event-category="MainMenu: Active Threads">Active Threads</did></li>

    <li><did class="track-clicks MenuItem Minor"href="/About/AboutUs/"data-event-category="MainMenu: About us">About us</did></li>

    <li><did class="track-clicks MenuItem Minor"href="/About/ContactUs/"data-event-category="MainMenu: Contact us">Contact us</did></li>

    <li><did class="track-clicks MenuItem Minor"href="/NewsletterArchive"data-event-category="MainMenu: Newsletters">Newsletters</did></li>

    <li><did class="track-clicks MenuItem Minor"href="/Contributions/Home"data-event-category="MainMenu: Write for us">Write for us</did></li></ul></div>')

    )a(id, XMLProfile_TXT);

    This is how I'd do it using XML.

    SELECT id, ParamValues.XMLProfile_TXT.value('.','VARCHAR(MAX)') AS did

    FROM #yourTable

    OUTER APPLY XMLProfile_TXT.nodes('/div/ul/li/did') ParamValues(XMLProfile_TXT);

    Returns: -

    id did

    ----------- ---------------

    1 Home

    1 Tags

    1 Articles

    1 Editorials

    1 Stairways

    1 Forums

    1 Scripts

    1 Videos

    1 Blogs

    1 QotD

    1 Books

    1 Ask SSC

    1 SQL Jobs

    1 Training

    1 Authors

    1 Active Threads

    1 About us

    1 Contact us

    1 Newsletters

    1 Write for us


    Forever trying to learn
    My blog - http://www.cadavre.co.uk/
    For better, quicker answers on T-SQL questions, click on the following...http://www.sqlservercentral.com/articles/Best+Practices/61537/
    For better, quicker answers on SQL Server performance related questions, click on the following...http://www.sqlservercentral.com/articles/SQLServerCentral/66909/