首页 > 解决方案 > 如何查询存储在数字字段中的 GUID

问题描述

我的表中有一个主键为 NUMBER,它是使用以下内容填充的:

to_number(sys_guid(),'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')

现在如何查询表?

使用

SELECT * FROM TABLE1 WHERE ID = 2.68819609716248E38

不返回任何结果

标签: oracleplsql

解决方案


好的,所以你有一个转换为数字的原始值。现在你需要扭转这个过程。

首先将保存的数字转换回字符串。然后申请hextoraw。当您从数字转换为字符串时,您必须使用格式模型来请求十六进制表示。然后您必须使用fm格式模型修饰符,并0用作第一个数字以确保字符串保持前导零;需要fm修饰符,因此您不会将空格(符号占位符)作为第一个字符。

或者,您可以直接与固定数字进行比较,但该数字必须有意义。您显示类似 2.68199...E38 作为输入。那是从哪里来的?显然不是将原始值转换为数字(就像您对sys_guid值所做的那样)。该值应为 38 位整数,38 位有效数字;你的值只有 15 位有效数字,所以其余的都用零填充。显然这不会匹配任何保存的值。


推荐阅读