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

SQL Server 2012 で xml 要素の位置を取得する

    SQL Server が XML シュレッディングをどのように実装しているかについての内部知識を使用して、row_number() を使用できます。 このように。

    declare @XML xml = 
    '<Rows>
       <Row>Coating</Row>
       <Row>Drying</Row>
       <Row>Waxing</Row>
    </Rows>'
    
    select T.X.value('text()[1]', 'nvarchar(100)') as RowLabel,
           row_number() over(order by T.X) as RowNumber
    from @XML.nodes('/Rows/Row') as T(X)
    

    参照:DENSE_RANK による XML ノードの一意の識別

    または、「安全に」数字の表を使用することもできます。

    select T.X.value('text()[1]', 'nvarchar(100)') as RowLabel,
           N.Number as RowNumber
    from Numbers as N
      cross apply @XML.nodes('/Rows/Row[sql:column("N.Number")]') as T(X)
    where N.Number between 1 and @XML.value('count(/Rows/Row)', 'int')
    



    1. mysql-列に助成金を適用する方法は?

    2. SQL Serverのデータベースですべてのチェックキーと外部キーの制約を有効にする方法(T-SQLの例)

    3. LOAD_FILEはNULLを返します

    4. すべてのユーザーテーブルにクラスター化インデックスが必要ですか?