Действительное логическое значение (XQuery)
Это действительные логические значения:
- Значение false, если операнд является пустой последовательностью или логическим значением false.
- В противном случае — значение true.
Можно рассчитать действительное логическое значение для выражений, возвращающих одно логическое значение, последовательность узла или пустую последовательность. Обратите внимание на то, что логическое значение рассчитывается неявно в процессе обработки следующих типов значений:
- Логические выражения
- Функция not
- Предложение WHERE выражения FLWOR
- Условные выражения
- QuantifiedeExpressions
Далее приводится пример действительного логического значения. При обработке выражения if определяется действительное логическое значение условия. Действительное логическое значение является false, потому что /a[1]
возвращает пустую последовательность. Результат возвращается как XML с одним текстовым узлом (false).
value is false
DECLARE @x XML
SET @x = '<b/>'
SELECT @x.query('if (/a[1]) then "true" else "false"')
go
В следующем примере — действительное логическое значение true, поскольку выражение возвращает непустую последовательность.
DECLARE @x XML
SET @x = '<a/>'
SELECT @x.query('if (/a[1]) then "true" else "false"')
go
При запросе типизированных переменных и столбцов xml можно получить узел логического типа. В этом случае data() возвращает логическое значение. Если выражение запроса возвращает логическое значение true, действительное логическое значение, как показано в следующем примере — true. Это также показано в примере.
- Создается коллекция XML-схем. Элемент <b> в коллекции имеет логический тип.
- Создается и запрашивается типизированная переменная xml.
- Выражение
data(/b[1])
возвращает логическое значение true. Таким образом, в данном случае действительное логическое значение — true. - Выражение
data(/b[2])
возвращает логическое значение false. Таким образом, в данном случае действительное логическое значение — false.
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
См. также
Основные понятия
Основы языка XQuery
Итерация и инструкция FLWOR (XQuery)