db2 - 如何在 DB2 9.5 和 11.5 中将 CLOB 强制转换为 INTEGER?
问题描述
我有一列将 XML 存储为 CLOB 数据,在这些 XML 中我有一个 ID 信息。首先,我使用 REGEX 表达式提取了 ID 信息,例如:
SELECT
regexp_substr(XML_CONTENT, '(<identifier>)(.*)(<\/identifier>)', 1, 1, 'c', 2) as ID
FROM XML_TABLE w
然后,此查询生成一个表,其中包含一个包含 ID 信息的 CLOB 列。例如:
|ID (CLOB)|
|123456| |456789|
现在我有了这些信息,我想将它与另一个表引用一个整数 PK 列,为此我需要将 CLOB ID 转换为 INTEGER ID。我怎样才能做到这一点?
我这样做是为了找到 DEV 和 PROD 数据库之间的差异,并且在这个环境中 DB2 版本是不同的,所以我需要这个查询来兼容 DB2 9.5 和 DB2 11.5。
解决方案
REXXP 函数是在 DB2 11.1 中引入的。因此,如果使用 Db2 9.5,您将需要使用例如 LOCATE 和 SUBSTR。例如
SELECT
SUBSTR(XML_CONTENT
, LOCATE( '<identifier>',XML_CONTENT) + LENGTH('<identifier>')
, LOCATE('</identifier>',XML_CONTENT) - LOCATE('<identifier>',XML_CONTENT) - LENGTH('<identifier>')
)
FROM
TABLE(VALUES
'blah <identifier>Some value</identifier> blah') AS X (XML_CONTENT)
推荐阅读
- android - 如何将图像从 src 属性添加到 Android 中的 gradient.xml 文件?
- ios - 要素标签未显示 ArcGis 10.2
- android - 如何从android的应用程序缓存中打开和读取这个文件?
- mapquest - MapQuest 的单行地址
- javascript - 如何通过更改asp.net mvc下拉菜单中的选项来过滤html表中的数据?
- amazon-redshift - 如何停止 AWS Redshift 调整大小活动?
- reactjs - 在反应中使用多个样式属性
- php - laravel api ajax表单不会提交
- python - 同时在 Pandas 数据框中进行多项操作
- python - 从列 A 获取列名,然后将该列的值保存在新列 C 中