您好,我想比较同一列中的两个 CLOBS。为此,我知道我必须首先将它们转换为 varchar。
我想从查询中检索的字符串始终具有这样的结构,即一个字符串是另一个字符串的子集。这意味着一个字符串包含另一个字符串。总是从 1...n 开始
因此,如果 string1 的长度为 k,而 string2 的长度为 n,其中 k < n,那么 string2 匹配 string1 到 k。情况总是如此。n!= k
无论如何,下面是我的代码,我无法将 CLOB 相互映射。我从来没有得到任何结果。到目前为止,我的方法是将较长的字符串转换为较短的字符串,然后检查它们是否匹配。然而这不起作用。我没有得到任何结果。
SELECT
s1.signaturedescription,
s2.signaturedescription,
s1.signdate,
s2.signdate
FROM
signature s1,
signature s2
WHERE
s1.signatureid = 'VerificationSignature'
AND
s2.signatureid = 'EbrCorrectActualValues'
AND
s1.username = s2.username
AND
dbms_lob.compare(s1.signaturedescription, s2.signaturedescription, 106, 1, 1) = 0;
上面的代码有效,但是我想用 s1.signaturedescription 的长度替换“106”。我尝试通过执行以下操作来完成此操作:
dbms_lob.compare(s1.signaturedescription, s2.signaturedescription, length((TO_CHAR(SUBSTR(s1.signaturedescription,1,4000)))), 1, 1) = 0;
然而,这不起作用。我没有得到任何返回的结果。你知道如何将 106 更改为 s1.signaturedescription 的长度吗?
谢谢