mysql - 使用 MySQL 无符号整数是不好的做法吗?

标签 mysql sql sql-server

<分区>

我需要存储只能为正数的整数,目前正在使用 MySQL。我将值设置为 UNSIGNED “以防万一”我有这么多记录,但是,我是否能到达那里值得怀疑。

我很好奇不使用 UNSIGNED 标志是否更好,以防万一我以后希望将数据库更改为不支持无符号整数的 MS SQL 等。

使用 MySQL 无符号整数是否被认为是不好的做法?

最佳答案

我认为使用适合所存储数据的数据类型不是坏习惯。

您提出了一个很好的关于可移植到其他数据库的问题。如果这是一个问题,那么您应该尝试遵守 ANSI 标准功能或您知道数据库之间相似的功能。

将代码从 MySQL 移动到 SQL Server 可能涉及比有符号整数和无符号整数之间的差异更多的重要工作。有许多地方的功能不同、不存在或表现不同。仅举一些例子:

  • cast() 在 MySQL 和 SQL Server 中采用不同的类型(as signed vs as int)
  • MySQL 在 123 + '456b' 的情况下有静默错误处理,而 SQL Server 会产生错误。
  • 两个数据库中的字符串连接运算符不同。
  • datediff() 在两个数据库中采用不同的参数

因此,signedunsigned 之间的区别将是转换中的次要问题。如果您计划进行此类更改,则需要仔细编写代码。

关于mysql - 使用 MySQL 无符号整数是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24554852/

相关文章:

c# - 在 C# 中为多用户环境生成发票号码

sql - 如何找出重复的记录

c# - SQL 数据库 VS。多个平面文件(数以千计的小型 CSV)

插入时的mysql触发器不起作用

MySQL:获取具有不同参数的行

c# - LINQ - 以列名作为字符串参数访问列

sql - 如何在 MySQL 中创建每日转储?

php - 进入Fk表更新记录

mysql - AWS数据管道-从外部源提取数据?

mysql - 如何仅比较时间(hh :mm:ss) in timestamp field in my sql. ?