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

XQUERY - 'value()' 関数で sql:variable を使用する方法は?

    declare @T table(XMLCol xml)
    insert into @T values
    ('<Root xmlns="http://tempuri.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Elem1 type="T1">
        <DisplayName type="string" display="Display name">No this</DisplayName>
        <Name type="string" display="First name">John</Name>
        <TimeZone display="Time zone">
          <children>
            <DisplayName type="string" display="Display name">GMT Standard Time</DisplayName>
            <HiddenName type="string" display="Hidden name">GMT</HiddenName>
          </children>
        </TimeZone>
      </Elem1>
    </Root>') 
    
    declare @Node1 varchar(50)
    set @Node1 = 'TimeZone'
    
    declare @Node2 varchar(50)
    set @Node2 = 'DisplayName'
    
    select N2.Value.value('.', 'varchar(100)') as Value 
    from @T as T
      cross apply (select T.XMLCol.query('//*[local-name()=sql:variable("@Node1")]')) as N1(Value) 
      cross apply (select N1.Value.query('//*[local-name()=sql:variable("@Node2")]')) as N2(Value)
    


    1. Rails5SQLインジェクション

    2. varchar変数で文字列の比較が失敗する

    3. Oracle NUMBERタイプをオーバーフローさせることは可能ですか?

    4. PostgreSQLデータベースをバックアップおよび復元する方法