转换为mysql / mariadb中签名的smallint

时间:2018-05-10 14:41:27

标签: mysql casting mariadb

我有一些数据存储为unsigned smallint(在mariadb中)。大多数时候,我宁愿将其视为签名的小写。有没有办法将unsigned smallint转换为带符号的smallint?

'CAST'功能在符号之间转换时的行为不符合预期。它显然是为了在字符串和数字之间进行转换,甚至不支持smallint作为争论。

使用手动编码逻辑是最好的方法吗?如:

IF( number > 32767, number - 65536, number )

还是我错过了某种内置的mysql功能?

1 个答案:

答案 0 :(得分:0)

我找了一会儿,没有找到任何内置的方法来做到这一点。如果有其他人遇到这个问题,我最终定义了我自己的函数,看起来像:

CREATE FUNCTION `unsignedSmallIntToSignedSmallInt`(n SMALLINT UNSIGNED) RETURNS SMALLINT
RETURN IF( n > 32767, n - 65536, n );