Sql 在blob上选择distinct
是否有方法验证Oracle数据库中更多行中blob中的值是否相同?blob是同一列 我将blob的大小存储在另一列中,但我需要知道该值是否也相等Sql 在blob上选择distinct,sql,database,oracle,blob,Sql,Database,Oracle,Blob,是否有方法验证Oracle数据库中更多行中blob中的值是否相同?blob是同一列 我将blob的大小存储在另一列中,但我需要知道该值是否也相等 存储的值是一个序列化对象。我建议添加另一列,其中包含blob值的值。存储blob时,还可以使用SHA256计算散列值,并将其存储。当您以后需要不同的值时,您只需使用此新列。的可能重复。不幸的是,如果您要标识哪些行包含相同的值,则无法避免使用连接,句点。至少,在条件中添加对象列的大小,并确保它在任何索引(引用BLOB)中位于第一位-这应有助于进行比较(通
存储的值是一个序列化对象。我建议添加另一列,其中包含blob值的值。存储blob时,还可以使用
SHA256
计算散列值,并将其存储。当您以后需要不同的值时,您只需使用此新列。的可能重复。不幸的是,如果您要标识哪些行包含相同的值,则无法避免使用连接
,句点。至少,在条件中添加对象列的大小,并确保它在任何索引(引用BLOB
)中位于第一位-这应有助于进行比较(通过消除大小不同的行)。如果使用联接,则没有问题。是否有任何特殊命令可以通过SQL命令直接计算现有blob值的哈希值?请阅读以了解如何在数据库中执行此操作。我建议您存储该哈希值,而不是每次都计算所有行的哈希值,因为这是一项昂贵的操作。我只想补充一点,您可以使用哈希并执行附加的相等条件,希望哈希将消除明显不同的blob,并且相等将防止您遭受哈希冲突。@DanielMošmondor如果您使用的哈希算法(如SHA256
或SHA512
)当前没有任何已知漏洞,我认为没有必要进行额外的平等性比较。此外,如果添加额外的相等比较,查询引擎将决定执行它们的顺序,并且可能在哈希比较之前结束。