2

我有一个返回unsigned long long值的 MySQL UDF。当我在 MySQL 中调用此函数并且数据已保存在数据库中时,MySQL 会返回警告:
BIGINT UNSIGNED 值超出范围”。
如何在数据库中保存大的无符号长长数字?

MySQL 版本:5.5.43
操作系统:Ubuntu 14.04

请帮忙。

4

1 回答 1

1

假设您的unsigned long long数据类型是 64 位,它应该非常适合 MySQLBIGINT UNSIGNED类型,它也是 64 位。

我建议检查宏的 C 实现limits.h(或climitsC++)文件,ULONG_MAX以确保它只有64 位。


但是,您应该知道,您可以对无符号值执行某些操作,这些操作也会给您此错误。如果您只是存储从 UDF 返回的确切值,则它可能不适用,但是,如果您正在执行以下操作:

select my_udf() - 22 from somewhere

my_udf()返回15(例如),您将看到该错误消息,因为-7无法以无符号类型表示。

如果是这种情况,解决方案可能就像将返回值强制转换为有符号类型一样简单,但我们需要更多关于它可以返回什么的信息才能正确提供建议。

于 2015-06-08T07:13:48.177 回答