ORACLE_查询blob字段中是否包含某个字符串/blob字段模糊匹配
要查询一个 BLOB 字段中是否包含某个字符串,可以使用 Oracle 的 DBMS_LOB.INSTR 函数。示例如下,
这里我们有2条记录,每条blob字段都有数据;其中第二条blob字段包含有字符串“T_NT_EndorsementBillEntry”,第一条记录没有
正常我们如下查询会报错:
对这个blob截取也会报这个错,这里我们可以使用如下方法,就可以找到有匹配的记录:
SELECT CASE WHEN DBMS_LOB.INSTR(fcontent, utl_raw.cast_to_raw('T_NT_EndorsementBillEntry')) > 0 THEN 'String found' ELSE 'String not found' END AS tt, b.* FROM T_BAS_KSQLReport b where fname_l2 LIKE '%应收票据汇总%'
注意:fcontent 是包含 BLOB 数据的列,T_NT_EndorsementBillEntry是您想要搜索的字符串。DBMS_LOB.INSTR 函数用于在 BLOB 数据中搜索指定的字符串,并返回它在 BLOB 中的位置。如果返回的位置大于 0,则表示字符串被找到了。
请注意,在使用 DBMS_LOB.INSTR 进行搜索时,您需要将搜索字符串转换为 RAW 格式,即使用 utl_raw.cast_to_raw 函数。这是因为 BLOB 数据是以字节形式存储的,而不是字符形式。
转化之后,我们就可以用下列查询方式去模糊匹配blob字段是否包含该字符串:
SELECT b.* FROM T_BAS_KSQLReport b where DBMS_LOB.INSTR(fcontent, utl_raw.cast_to_raw('T_NT_EndorsementBillEntry')) > 0
linux下的docker操作命令及异常
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2023-02-06 EAS获取用户对象userInfo