回答

收藏

如何在Oracle中比较两个CLOB值

技术问答 技术问答 288 人阅读 | 0 人回复 | 2023-09-13

我有两张桌子要赞扬。列之一是CLOB类型。我想做这样的事情:
9 }" N8 V  w1 Hselect key, clob_value source_table$ F5 i* m- l4 E+ k
minus. \' E4 u# P+ Q9 _
select key, clob_value target_table" x5 p% w# v. C# l  I0 g: u
不幸的是,Oracle无法对Clob执行减号操作。我怎样才能做到这一点?/ L  B7 n* z# S4 u9 z2 c
               
1 k# ]/ N/ N5 k5 l. c% }6 T0 z/ Y解决方案:
2 g4 V6 e' C( z9 ?* S                " c1 T% u5 v0 M. @
8 S' Z" x- e2 K6 C- q- s& T
4 C& K% m# j* l0 \0 F0 j% J; C
                格式是这样的:
* v2 a1 k/ U% L: \. q/ C$ ~dbms_lob.compare(  5 Q, ~; S8 n- s' I- e, X
lob_1    IN BLOB,  
1 Y" Y6 {: ?. i2 N$ {2 q% c8 Ulob_2    IN BLOB,  / U1 h% b+ J$ V9 d8 R. T
amount   IN INTEGER := 18446744073709551615,  
+ L  X( E- s* O. |% q- J8 Moffset_1 IN INTEGER := 1,  2 M8 d# E( A1 {1 m3 i, c
offset_2 IN INTEGER := 1)  
) i3 N3 J, j' m1 O* `RETURN INTEGER;9 {7 B$ L- G" {* g% p

6 s% R- i1 Z+ f/ ~如果dbms_lob.compare(lob1,lob2)= 0,则它们是相同的。
2 h2 I3 F; P3 t* ]3 {& G* S这是一个基于您的示例的示例查询:
/ X! N1 n9 K+ D. `' S& O. OSelect key, glob_value  2 Y- Y/ Q/ y9 V/ k0 l
From source_table Left Join target_table  
5 k- P) F  P; ]' b3 O1 b  On source_table.key = target_table.key  
/ {; p4 {0 N& s1 }& q2 ^Where target_table.glob_value is Null  4 [( X7 L- U& c  u. s" y6 e4 D
  Or dbms_lob.compare(source_table.glob_value, target_table.glob_value)  0
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则