タイプミスと一貫性のない名前付けがあるため、そのエラーを取得するために実際に何をしているのかを正確に判断するのは困難ですが、string-length()
を使用すると機能します。 length()
ではなく、DB2の例の関数 (またはlength()
):
"address" varchar2(15) path 'address/(if(string-length(.)<=15) then . else "Error!")'
エラー動作をトリガーするようにデータを変更した場合:
select *
from XMLTABLE ('customers/*'
passing xmltype('<customers>
<customer>
<name>abc</name>
<surname>abc</surname>
<address>abc def ghi jkl mno</address>
</customer>
<customer>
<name>abc</name>
<surname>abc</surname>
<address>abc</address>
</customer>
</customers>')
columns
"address" varchar(15) path 'address/(if(string-length(.)<=15) then . else "Error!")'
) data;
address
---------------
Error!
abc