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

时间:2014-07-03 13:21:05

标签: mysql sql sql-server

我需要存储只有正数的整数,并且我目前正在使用MySQL。我将这些值设为UNSIGNED“以防万一”我曾经有过如此多的记录,然而,我是否会到达那里是值得怀疑的。

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

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

1 个答案:

答案 0 :(得分:2)

我不认为使用适合所存储数据的数据类型是不好的做法。

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

将代码从MySQL迁移到SQL Server可能需要付出更多的努力,而不仅仅是有符号整数和无符号整数之间的差异。功能不同,不存在或行为不同的地方有很多。只是给出一些例子:

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

因此,signedunsigned之间的差异将成为转化中的一个小问题。如果您计划进行此类更改,则需要仔细编写代码。

相关问题