这是我在XMLTYPE列中的XML:
<customers>
<customer>
<name>abc</name>
<surname>abc</surname>
<address>abc</address>
</customer>
<customer>
<name>abc</name>
<surname>abc</surname>
<address>abc</address>
</customer>
</customers>
我希望如果字段的长度超过允许的长度,则为15个字符,然后使用默认值。
在DB2指南中,我找到了这个例子:
select ...from .., XMLTABLE
('$INFO/customerinfo*' passing
columns
city varchar(16) path a'addr/city(if(string-lenght(.)<=16) then . else "Error!")'
) ..
我如何在Oracle中执行此操作?这是我目前的XMLTABLE尝试:
select ..XMLTABLE
('customers/*' passing ..
columns
...
"address" varchar(15) path 'indirizzo/(if(lenght(.)<=15) then . else "Error!")'
) data;
但是得到了:
ORA-19237。无法解析对函数的调用-fn:length
答案 0 :(得分:0)
你有拼写错误和不一致的命名,因此很难准确说出你为了得到这个错误而确实在做什么,但是如果你使用DB2示例中的string-length()
函数而不是{{1} }(或length()
):
lenght()
使用修改后的数据来触发错误行为:
"address" varchar2(15) path 'address/(if(string-length(.)<=15) then . else "Error!")'