xquery, чтобы проверить, является ли значение null, затем вернуть null как строку
Я новичок в XQuery. Пожалуйста, помогите мне решить проблему, указанную ниже. Я хочу вернутьnull
значение в виде строки, если приведенное ниже выражение не дает никакого значения.
В настоящее время в выходных данных не отображается само поле "имя". Я хочу иметь имя сnull
. например,
if (IsNull(expression),null,expression)
$output.dataAccessResponse[1]/*:row/*:name/text()
1 ответ
Вы можете использовать fn:exists()
функция, чтобы проверить, есть ли text()
узел.
exists($output.dataAccessResponse[1]/:row/:name/text())
Вы также можете использовать fn:boolean()
функция для проверки эффективного логического значения узла.
boolean($output.dataAccessResponse[1]/:row/:name/text())
Если вы хотите проверить, было ли значимое значение, то есть что-то иное, кроме пробелов, вы можете fn:normalize-space()
в предикате, чтобы гарантировать, что только text()
узлы с осмысленным текстом выбираются, а затем проверяются fn:exists()
.
exists($output.dataAccessResponse[1]/:row/:name/text()[normalize-space()])
XQuery не имеет null
, поэтому, если вы спрашиваете, что вернуть, чтобы указать null
, тогда вы захотите вернуть пустую последовательность ()
вместо того null
.
Итак, вы можете выполнить что-то вроде этого:
let $name := $output.dataAccessResponse[1]/:row/:name/text()
return
if (fn:exists($name))
then $name
else ()
Но в этот момент это действительно то же самое, что просто попытаться выбрать text()
с этим XPath, и он либо вернет text()
узел или пустая последовательность:
$output.dataAccessResponse[1]/:row/:name/text()