gpt4 book ai didi

sql - 如何从 SQL 中的文本 CLOB 字段中提取值

转载 作者:行者123 更新时间:2023-12-04 21:04:18 24 4
gpt4 key购买 nike

我有一个填充了 CLOB 的 SQL 表列 (BINARYTEXT)。在这个 CLOB 中有许多属性,例如

CE.EffDate="20140106";
CE.CCY="EUR";
CE.TransactionType="STANDARDEUROPEAN";
CE.CAL="LON";

我只需要提取包含在双引号之间的 CE.TransactionType 属性的值,所以 'STANDARDEUROPEAN'。请注意,CLOB 不包含 XML,只包含上述属性,没有开始或结束标记。

当我在命令中指定字符串时,我已经弄清楚如何使用 REGEXP_SUBSTR 函数执行此操作:
select REGEXP_SUBSTR('CE.TransactionType="STANDARDEUROPEAN"', '="[^"]+') transtype 
from DUAL

返回:="STANDARDEUROPEAN

我无法将其操作为使用 CLOB 作为字符串。这不起作用:
select REGEXP_SUBSTR(BINARYTEXT,'CE.TransactionType="STANDARDEUROPEAN"', '="[^"]+')  transtype 
from DUAL

提前致谢,

史蒂夫

最佳答案

您可以使用 DBMS_LOB 包来提取字符串。

SELECT REGEXP_SUBSTR(DBMS_LOB.substr(BINARYTEXT,3000) ,'CE.TransactionType="STANDARDEUROPEAN"', '="[^"]+')  transtype 
FROM YOURTABLENAME

您唯一可能遇到的问题是缓冲区大小,它限制为 32767 字节(在我的示例中设置为 3000)。如果您的数据比这大,那么您需要分块查询。查看文档 here

如果您需要更改您正在搜索的 TransactionType,您可能应该创建一个函数,该函数将字符串的那部分作为参数并动态构建 sql。

关于sql - 如何从 SQL 中的文本 CLOB 字段中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20955824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com