mysql - 如何反转int unsigned?
问题描述
我在 MySQL 5.7 中使用 da 数据类型 bigint unsigned 并希望通过查询输出反转值。所以 30 变成 -30。
SELECT
mynumber * (- 1) as value
这将返回错误:
Data truncation: BIGINT UNSIGNED value is out of range
在不更改数据类型的情况下如何做到这一点?
解决方案
无符号只能保存正值。您需要强制转换为已签名才能获得负值。
SELECT CAST(mynumber AS SIGNED) * -1 AS value
但是,如果 的值mynumber
大于最大的正符号值(无符号值可以是相应有符号类型的两倍),则会溢出。
如果这只是为了显示,您可以简单地连接-
字符:
SELECT CONCAT('-', mynumber) AS value
推荐阅读
- python - OAuth 登录完成后重定向到上一个 URL(flask-dance)
- pandas - ValueError:无法从重复的轴 pd.concat 重新索引
- c# - 为什么我们在专门解码base64string时需要先转换为字节然后再转换为字符串?
- c++ - 使用 CUDA /Investigation 并行化嵌套 for 循环的 c++ 的可能性
- swift - BOMStream BOMStreamWithFileAndSys(int, off_t, size_t, int, char *, BomSys *): read: 没有这样的文件或目录
- powershell - 有没有办法使用 CLI 或使用某些命令在人群中创建用户?
- c# - 仅继承枚举的一部分
- reporting-services - SSRS - 添加总行 + 总百分比
- python - 如何在python中导出没有图像的行
- powershell - 使用 PowerShell 脚本查找过去的日期