检查XMLTable中列的长度

时间:2016-03-17 01:41:14

标签: sql xml oracle xmltable

这是我在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

1 个答案:

答案 0 :(得分:0)

你有拼写错误和不一致的命名,因此很难准确说出你为了得到这个错误而确实在做什么,但是如果你使用DB2示例中的string-length()函数而不是{{1} }(或length()):

lenght()

使用修改后的数据来触发错误行为:

"address" varchar2(15) path 'address/(if(string-length(.)<=15) then . else "Error!")'