提问人:Loopinfility 提问时间:9/29/2021 最后编辑:rhavelkaLoopinfility 更新时间:1/4/2022 访问量:1011
ESQL-> 如何使用 SELECT 语句从输入 XMLNSC 中检索值?
ESQL-> How to use SELECT statement to retrieve value from input XMLNSC?
问:
我需要根据其名称访问特定的 XMLNSC 值。我有一个输入xmlnsc,看起来像这样
<Message>
<Tags>
<Name>ev1</Name>
<Length>004</Length>
<Value>0050</Value>
</Tags>
</Message>
我正在尝试使用元素访问元素。这是我的说法,但我认为是不正确的。<Value>
<Name>
SET OutputRoot.JSON.Data.records[i].userId = THE (SELECT ITEM FIELDVALUE (InputRoot.XMLNSC.Message.Tags.Value)
FROM InputRoot.XMLNSC.Message.Tags
WHERE InputRoot.XMLNSC.Message.Tags.Name = 'ev1');
我想知道在ESQL中实现此目的的正确方法是什么。提前致谢!
答:
3赞
kimbert
9/29/2021
#1
我想我发现了你的错误。FROM 子句中需要 []。 这可能有效(未测试):
SET OutputRoot.JSON.Data.records[i].userId = THE (
SELECT ITEM FIELDVALUE (tag.Value)
FROM InputRoot.XMLNSC.Message.Tags[] AS tag
WHERE tag.Name = 'ev1'
);
0赞
Iván Sánchez
1/4/2022
#2
对于简单的类型,例如字符,您只需要 THE 和 ITEM,我建议您这样做:
SET OutputRoot.JSON.Data.records[i].userId = THE(SELECT ITEM P.Value FROM InputRoot.XMLNSC.Message.Tags[] AS P
WHERE P.Name = 'ev1');
如果存在,这将返回“Value”的值,而不是 ROW。所以检查一下。
评论
0赞
kimbert
2/2/2022
不确定您的陈述是否 100% 正确。THE 和 ITEM 都与 LIST 值相关。允许 LIST 包含复杂成员。也许您的意思是在选择简单类型时通常使用 THE 和 ITEM......但那不是你说的。
0赞
Iván Sánchez
2/3/2022
好吧,在 IBM 文档中说“ITEM 与标量表达式和 THE 函数结合使用,它可以用来创建返回单个标量值的 SELECT 查询”。就是这样。
0赞
kimbert
2/4/2022
是的,我可以看到混乱出现的地方。我认为这句话是在描述THE的一种可能用法。通常,THE 函数可以在任何列表上使用。
评论