我在DB中有varchar2列.此列以xml格式存储字符串.但并非所有字符串都是格式良好的xml(有些是错误的).我如何检查这个字符串是否格式良好的xml?
如果这个字符串没有很好地形成xml,那么像这样的sql-query将在运行时失败:
select
extractvalue(xmltype(some_table.value), 'Attachment/@category')
from some_table
Run Code Online (Sandbox Code Playgroud)
Xml具有以下格式:
<Attachment {attributes} />
Run Code Online (Sandbox Code Playgroud)
每个字符串中的属性数可以不同.
所以当像'asdf'这样的字符串出现时,我的查询就不会失败.
这是一个简单的功能,将为您检查;
CREATE OR REPLACE FUNCTION isXML(xml CLOB)
RETURN NUMBER
AS
xmldata XMLTYPE;
BEGIN
xmldata := XMLTYPE(xml);
return 1;
EXCEPTION
when others then
return 0;
END;
/
Run Code Online (Sandbox Code Playgroud)
你可以用它;
SQL> SELECT isXML('fdjkasksdf') FROM DUAL;
ISXML('FDJKASKSDF')
-------------------
0
SQL> SELECT isXML('<body></body>') FROM DUAL;
ISXML('<BODY></BODY>')
----------------------
1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6075 次 |
| 最近记录: |