gpt4 book ai didi

mysql - 为什么我不能将我的 INT 从无符号更改为有符号?可以签名 Zerofill 吗?

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:25 25 4
gpt4 key购买 nike

我在名为 TEST 的表中有一个名为 NUMBER 的字段

NUMBER is int(8) Unsigned Zerofill Not Null

我现在需要此字段中的负数,但我仍然希望它们为 zerofilled例如-00023419

我可以将其更改为已签名,但似乎无法进行 zerofilled。

如果我这样做:alter table test modify number int(8) signed zerofill not null -它保持未签名的 zerofill

如果我这样做:alter table test modify number int(8) zerofill not null - 它保持未签名的 zerofill

如果我这样做:alter table test modify number int(8) signed not null -我得到了签名但没有 zerofill

当我将它设置为有符号时,我输入了一个负数然后尝试更改为 zerofill 并且数字更改为 00000000 并且所有内容都再次设置为无符号。不可能有签名的零填充数字?

最佳答案

https://dev.mysql.com/doc/refman/5.7/en/numeric-type-attributes.html说:

If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column.

在 2006 年被报告为一个错误,作为“不是错误”关闭。 https://bugs.mysql.com/bug.php?id=24356


回复你的评论:

So does this mean no one out there has negative zero filled data in a mysql database?

没错。 ZEROFILL 最常见的用例是确保邮政编码或银行帐号等内容使用固定数量的数字。这些情况无论如何都不支持负值,所以为什么要为 -00001234 这样丑陋的字符串烦恼呢?

can you convert it to zerofilled with PHP?

是的,您可以在 PHP 中使用零填充来格式化数字。

<?php

$n = -1234;
printf("Number is %08d\n", $n);

输出:

Number is -0001234

阅读http://php.net/manual/en/function.sprintf.php您可以使用 printf()/sprintf() 进行更简洁的格式化操作。

关于mysql - 为什么我不能将我的 INT 从无符号更改为有符号?可以签名 Zerofill 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40226593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com