Effektív Boole-érték (XQuery)

A következőkre vonatkozik:SQL Server

Ezek a effektív Boole-értékek:

  • Tátos, ha az operand üres vagy Boole-i hamis.

  • Ellenkező esetben az érték igaz.

Az effektív Boole-érték kiszámítható olyan kifejezésekre, amelyek egyetlen Boole-értéket, csomópont-sorozatot vagy üres sorozatot adnak vissza. Megjegyzendő, hogy a Boole-értéket implicit módon számítják ki, amikor a következő típusú kifejezéseket dolgozzák fel:

Az alábbiakban egy példa egy effektív Boole-értékre. Amikor az if-kifejezést feldolgozjuk, a feltétel effektív Boole-értéke kerül meghatározásra. Mivel /a[1] üres sorozatot ad vissza, az effektív Boole-érték hamis. Az eredmény XML-ként jelenik meg egy szövegcsomóponttal (hamis).

value is false  
DECLARE @x XML  
SET @x = '<b/>'  
SELECT @x.query('if (/a[1]) then "true" else "false"')  
go  

A következő példában az effektív Boole-érték igaz, mert az kifejezés nem üres sorozatot ad vissza.

DECLARE @x XML  
SET @x = '<a/>'  
SELECT @x.query('if (/a[1]) then "true" else "false"')  
go  

Gépelt xml oszlopok vagy változók lekérdezésekor lehetnek Boolean típusú csomópontok. Ebben az esetben az data() egy Boole-értéket ad vissza. Ha a lekérdezési kifejezés Boole-értéket ad vissza, akkor az effektív Boole-érték igaz, ahogy azt a következő példa is mutatja. Az alábbiakat is szemlélteti a példa:

  • Egy XML sémagyűjtemény jön létre. A gyűjteményben található b> elem <Boole-típusú.

  • Egy típusozott xml változót hoznak létre és lekérdezik.

  • Az adott kifejezés data(/b[1]) egy Boole-értéket ad vissza. Ezért ebben az esetben az effektív Boole-érték igaz.

  • Az kifejezés data(/b[2]) egy Boole-téves értéket ad vissza. Ezért ebben az esetben a hatékony Boole-érték hamis.

CREATE XML SCHEMA COLLECTION SC AS '  
<schema xmlns="http://www.w3.org/2001/XMLSchema">  
      <element name="s" type="string"/>  
      <element name="b" type="boolean"/>  
</schema>'  
go  
DECLARE @x XML(SC)  
SET @x = '<b>true</b><b>false</b>'  
SELECT @x.query('if (data(/b[1])) then "true" else "false"')  
SELECT @x.query('if (data(/b[2])) then "true" else "false"')  
go