xquery检查值是否为null,然后将null作为字符串返回

xquery检查值是否为null,然后将null作为字符串返回,xquery,informatica,informatica-cloud,application-integration,cloud-integration,Xquery,Informatica,Informatica Cloud,Application Integration,Cloud Integration,我不熟悉XQuery。请指导我解决以下问题,如果下面的表达式没有给出任何值,我希望以字符串形式返回null值 目前,输出不显示“名称”字段本身。我想要一个null的名字。例如- if (IsNull(expression),null,expression) $output.dataAccessResponse[1]/*:row/*:name/text() 您可以使用该函数测试是否存在text()节点 exists($output.dataAccessResponse[1]/:row/:nam

我不熟悉XQuery。请指导我解决以下问题,如果下面的表达式没有给出任何值,我希望以字符串形式返回
null

目前,输出不显示“名称”字段本身。我想要一个
null
的名字。例如-

if (IsNull(expression),null,expression)

$output.dataAccessResponse[1]/*:row/*:name/text()
您可以使用该函数测试是否存在
text()
节点

exists($output.dataAccessResponse[1]/:row/:name/text())
您还可以使用该函数测试节点的有效布尔值

boolean($output.dataAccessResponse[1]/:row/:name/text())
如果要测试是否存在有效值,即除空白以外的其他值,可以在谓词中,确保只选择具有有意义文本的
text()
节点,然后测试
fn:exists()

XQuery没有
null
,因此如果您询问返回什么来表示
null
,那么您希望返回一个空序列
()
,而不是
null

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

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

$output.dataAccessResponse[1]/:row/:name/text() 
您可以使用该函数测试是否存在
text()
节点

exists($output.dataAccessResponse[1]/:row/:name/text())
您还可以使用该函数测试节点的有效布尔值

boolean($output.dataAccessResponse[1]/:row/:name/text())
如果要测试是否存在有效值,即除空白以外的其他值,可以在谓词中,确保只选择具有有意义文本的
text()
节点,然后测试
fn:exists()

XQuery没有
null
,因此如果您询问返回什么来表示
null
,那么您希望返回一个空序列
()
,而不是
null

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

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

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

感谢您的快速响应。但是我正在查找if statement.te代码是否应该返回原始值if exists else empty sequence()。exists将返回true/false。好的,不太清楚您要的是什么。只需使用XPath寻址
text()
节点,它将返回节点或空序列。根本不需要if/else块。由于name为null,我得到的是TEST MESG N。但是,我希望得到输出,因为这是TEST MESG,我已经为text提供了xpath。$output.dataAccessResponse[1]/:row/:name/text()如果要复制name元素,请选择name元素。如果您为上下文显示了更多的代码,并查看如何对其进行评估,这可能会有所帮助。感谢您的快速响应。但我正在查找if语句。te代码应返回原始值if exists else empty sequence()。exists将返回true/false。好的,您的要求不太清楚。只需使用XPath寻址
text()
节点,它将返回节点或空序列。根本不需要if/else块。由于name为null,我得到的是TEST MESG N。但是,我希望得到输出,因为这是TEST MESG,我已经为text提供了xpath。$output.dataAccessResponse[1]/:row/:name/text()如果要复制name元素,请选择name元素。如果您展示了更多的上下文代码,并了解如何对其进行评估,这可能会有所帮助。