WITH FUNCTION is_valid_xml(data CLOB) RETURN NUMBER
IS
v_xml XMLTYPE;
BEGIN
v_xml := XMLTYPE('<root>' || data || '</root>');
RETURN 1;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END;
SELECT COUNT(*)
FROM table_name
WHERE is_valid_xml(column_name) = 0;
字符串 其中,对于样本数据:
CREATE TABLE table_name (column_name) AS
SELECT EMPTY_CLOB() || '<sup>2</sup>' FROM DUAL UNION ALL
SELECT EMPTY_CLOB() || '<sup>2/sup>' FROM DUAL;
CREATE FUNCTION is_valid_xml(data CLOB) RETURN NUMBER
IS
v_xml XMLTYPE;
BEGIN
v_xml := XMLTYPE('<root>' || data || '</root>');
RETURN 1;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END;
/
1条答案
按热度按时间w1e3prcc1#
如果你想知道XML是否有效,那么就使用XML解析器。
您可以使用一个函数来测试解析XML并捕获任何异常,然后计算无效行:
字符串
其中,对于样本数据:
型
产出:
| 中文(简体)|
| --|
| 1 |
您还可以使用以下命令创建存储函数(而不是将其内联到查询中):
型
fiddle