代码之家  ›  专栏  ›  技术社区  ›  Bhalchandra K

如果XML列包含值为的元素,SQL Server XQuery将选择记录

  •  2
  • Bhalchandra K  · 技术社区  · 10 年前

    我想从Orders表中选择记录。它包含OrderXML作为XML类型列。

    如果OrderXML具有用户给定状态的订单,那么它应该选择该记录。 我正在尝试以下查询,但无法工作-

    SELECT * 
    FROM   ORDER 
    WHERE  ORDERXML.EXISTS('/Order/header/status/text()="Processing"') = 1 
    
    1 回复  |  直到 10 年前
        1
  •  3
  •   Mikael Eriksson    10 年前

    您需要将谓词放在括号内 exist 需要小写。XML区分大小写,甚至SQL Server中的XML函数名也区分大小写。

    select O.*
    from [Order] as O
    where O.OrderXML.exist('/Order/header/status[text() = "Processing"]') = 1