oracle - 如何查询存储在数字字段中的 GUID
问题描述
我的表中有一个主键为 NUMBER,它是使用以下内容填充的:
to_number(sys_guid(),'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
现在如何查询表?
使用
SELECT * FROM TABLE1 WHERE ID = 2.68819609716248E38
不返回任何结果
解决方案
好的,所以你有一个转换为数字的原始值。现在你需要扭转这个过程。
首先将保存的数字转换回字符串。然后申请hextoraw
。当您从数字转换为字符串时,您必须使用格式模型来请求十六进制表示。然后您必须使用fm
格式模型修饰符,并0
用作第一个数字以确保字符串保持前导零;需要fm
修饰符,因此您不会将空格(符号占位符)作为第一个字符。
或者,您可以直接与固定数字进行比较,但该数字必须有意义。您显示类似 2.68199...E38 作为输入。那是从哪里来的?显然不是将原始值转换为数字(就像您对sys_guid
值所做的那样)。该值应为 38 位整数,38 位有效数字;你的值只有 15 位有效数字,所以其余的都用零填充。显然这不会匹配任何保存的值。
推荐阅读
- typescript - {} 在 TypeScript 中是什么意思?
- angular - 如何在 Cordova UWP(Ionic 4)中删除/隐藏后退箭头?
- python - 如何在 Dark Sky API 中指定日期范围
- r - R分成多列,转置和连接
- amazon-web-services - Android 应用程序中的 AWS 面部识别
- python - builtins.NameError:名称“答案”未定义
- java - JIT 对 instanceOf 运算符做了什么?
- c# - Xamarin.Forms 数据绑定
- django - 确认用户拥有社交帐户而不切换到其他登录用户(django social auth)
- php - jQuery AJAX - 将值传递给 PHP 文件