sql - 在 Oracle SQL 表中转换和验证 XMLType 需要帮助
问题描述
所以这里的场景是数据来自外部系统到 oracle 数据库。我需要将 CLOB 数据类型转换为 XMLTYPE 并验证表中的 XMLTYPE 字段。如果验证或转换失败,我需要将此记录推送到另一个表中。我怎样才能做到这一点。
我尝试使用 XMLTYPE 函数和 XMLISVALID 函数,但我不断收到错误。
解决方案
你可以使用WITH FUNCTION
:
CREATE TABLE t(id INT, x CLOB);
INSERT INTO t(id, x) VALUES(1, '<root/>');
INSERT INTO t(id, x) VALUES(2, '<root></root>');
INSERT INTO t(id, x) VALUES(3, '<root><a></root>'); -- incorrect XML
检查列的内容是否是有效的 XML:
WITH FUNCTION func(col CLOB) RETURN NUMBER
AS
x XMLTYPE;
BEGIN
x := XMLTYPE(col);
RETURN 1;
EXCEPTION WHEN OTHERS THEN
RETURN 0;
END;
SELECT *
FROM t
WHERE func(x) = 1; -- get only valid XML
-- WHERE func(x) = 0; -- get invalid XML
推荐阅读
- json - Swift 4 JSON 解码 [字符串:任意]
- python - python 使用嵌套列表检查列表
- javascript - 如何将数据推送到值属性 HTML 中,就像 DataTables 中每个选定行的数组一样?
- matlab - 在 Matlab R2016a 中将单元类类型的输出转换为矩阵
- php - 如何在 laravel 5.6 中 35 天后自动软删除数据?
- javascript - 从第二个文本框中获取数据
- java - Java 多线程:在本机库的 Thread 类中实现重要方法?
- c# - 如何在表单内的表单内显示对话框
- apache-kafka - kafka + 如何计算 log.retention.byte 的值
- mysql - 如何在 Windows 10 中仅安装 MySQL 客户端?