sql >> データベース >  >> RDS >> Sqlserver

SQLServer列のhtmlからデータを取得する方法

    HTMLが実際にXHTMLに準拠していて、HTMLがXMLに保存されている場合 SQL Serverテーブルの列の場合、XQueryを使用してT-SQLでその列からラベルを取得できます。

    DECLARE @HtmlTbl TABLE (ID INT IDENTITY, Html XML)
    
    INSERT INTO @HtmlTbl(Html) VALUES('<ektdesignns_choices ektdesignns_nodetype="element" title="How many gigs do you play each month?" ektdesignns_caption="How many gigs do you play each month?" name="ektpoll1303074024421" ektdesignns_name="ektpoll1303074024421" id="ektpoll1303074024421">
      <ol contenteditable="false" onkeypress="design_validate_choice(1, -1, this, ''Options are required.'')" onclick="design_validate_choice(1, -1, this, ''Options are required.'')" onblur="design_validate_choice(1, -1, this, ''Options are required.'')" ektdesignns_validation="choice-req" ektdesignns_maxoccurs="1" ektdesignns_minoccurs="1" unselectable="on" title="How many gigs do you play each month?" class="design_list_vertical">
        <li>
          <input type="radio" ektdesignns_nodetype="item" name="ektpoll1303074024421" value="1 or fewer_1" title="1 or fewer" id="ID2504263" />
          <label contenteditable="true" unselectable="off" for="ID2504263">1 or fewer</label>
        </li>
        <li>
           <input type="radio" ektdesignns_nodetype="item" name="ektpoll1303074024421" value="2-4_2" title="2-4" id="ID5115606" />
           <label contenteditable="true" unselectable="off" for="ID5115606">2-4</label>
        </li>
        <li>
            <input type="radio" ektdesignns_nodetype="item" name="ektpoll1303074024421" value="5-7_3" title="5-7" id="ID477116" />
            <label contenteditable="true" unselectable="off" for="ID477116">5-7</label>
        </li>
        <li>
            <input type="radio" ektdesignns_nodetype="item" name="ektpoll1303074024421" value="8 or more_4" title="8 or more" id="ID5515606" />
            <label contenteditable="true" unselectable="off" for="ID5515606">8 or more</label>
        </li>
      </ol></ektdesignns_choices><input type="submit" value="Vote" />')
    

    これにより、すべての<label>が取得されます (X)Htmlの要素を単一のXML文字列として:

    SELECT
        Html.query('//label')
    FROM @HtmlTbl 
    WHERE ID = 1
    

    出力:

    <label contenteditable="true" unselectable="off" for="ID2504263">1 or fewer</label>
    <label contenteditable="true" unselectable="off" for="ID5115606">2-4</label>
    <label contenteditable="true" unselectable="off" for="ID477116">5-7</label>
    <label contenteditable="true" unselectable="off" for="ID5515606">8 or more</label>
    

    または、これにより<label>のすべてのコンテンツが選択されます タグ、行ごとに1つ:

    SELECT
        C.value('(.)[1]', 'varchar(1000)')
    FROM @HtmlTbl 
    CROSS APPLY Html.nodes('//label') AS T(C)
    WHERE ID = 1
    

    出力:

    1 or fewer
    2-4
    5-7
    8 or more
    


    1. Ubuntu-12.04-MySqlはサービスmysqlstartを使用して起動しません

    2. datepicker日付をmysql日付に変換します

    3. MYSQL / PHPで重複するTEXTフィールドをチェックするための最良の方法は何ですか?

    4. 毎月の時間ごとにラベルでユーザーをマーク