xquery检查值是否为null,然后以字符串形式返回null

时间:2020-06-05 13:41:56

标签: xquery informatica informatica-cloud application-integration cloud-integration

我是XQuery的新手。如果下面的表达式没有给出任何值,请指导我解决以下问题,我想以字符串形式返回null值。

当前,输出未显示“名称”字段本身。我想用null命名。例如-

if (IsNull(expression),null,expression)

$output.dataAccessResponse[1]/*:row/*:name/text()

1 个答案:

答案 0 :(得分:0)

您可以使用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,那么您将想返回一个空序列()而不是{{1} }。

因此,您可以执行以下操作:

null

但是到那时,它实际上与尝试使用该XPath选择let $name := $output.dataAccessResponse[1]/:row/:name/text() return if (fn:exists($name)) then $name else () 相同,它将返回text()节点或空序列:

text()