C++ unsigned long long range vs [=s10=] unsigned bigint range
c++ usigned long long range vs mysql unsigned bigint range
我有一个 MySQL UDF returns unsigned long long 值。当我在 MySQL 中调用此函数并且数据已保存在数据库中时,MySQL returns 警告:
“BIGINT UNSIGNED 值超出范围”。
如何在数据库中保存大的 unsigned long long 数字?
MySQL版本:5.5.43
OS : Ubuntu 14.04
请帮忙。
假设您的 unsigned long long
数据类型是 64 位,它应该非常适合 MySQL BIGINT UNSIGNED
类型,它也是 64 位。
我建议检查宏 ULONG_MAX
的 C 实现 limits.h
(或 climits
for C++)文件以确保它 是 只有 64 位。
但是您应该知道,您可以对无符号值执行某些操作,这些操作也会给您带来此错误。如果您只是简单地存储从 UDF 中编辑的确切值 return,那么它可能不适用,但是,如果您正在做类似的事情:
select my_udf() - 22 from somewhere
和 my_udf()
returns 15
(例如),您会看到该错误消息,因为 -7
不能用无符号类型表示。
如果是这样,解决方案 可能 就像将 return 值转换为有符号类型一样简单,但我们需要更多信息来了解它是什么能否return给个正确的建议。
我有一个 MySQL UDF returns unsigned long long 值。当我在 MySQL 中调用此函数并且数据已保存在数据库中时,MySQL returns 警告:
“BIGINT UNSIGNED 值超出范围”。
如何在数据库中保存大的 unsigned long long 数字?
MySQL版本:5.5.43
OS : Ubuntu 14.04
请帮忙。
假设您的 unsigned long long
数据类型是 64 位,它应该非常适合 MySQL BIGINT UNSIGNED
类型,它也是 64 位。
我建议检查宏 ULONG_MAX
的 C 实现 limits.h
(或 climits
for C++)文件以确保它 是 只有 64 位。
但是您应该知道,您可以对无符号值执行某些操作,这些操作也会给您带来此错误。如果您只是简单地存储从 UDF 中编辑的确切值 return,那么它可能不适用,但是,如果您正在做类似的事情:
select my_udf() - 22 from somewhere
和 my_udf()
returns 15
(例如),您会看到该错误消息,因为 -7
不能用无符号类型表示。
如果是这样,解决方案 可能 就像将 return 值转换为有符号类型一样简单,但我们需要更多信息来了解它是什么能否return给个正确的建议。