0

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

对于符号之间的转换,“CAST”函数的行为不符合预期。它显然是为了在字符串和数字之间进行转换,甚至不支持 smallint 作为参数。

用手工编码的逻辑来做到这一点是最好的方法吗?如 :

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

还是我缺少某种内置的 mysql 功能?

4

1 回答 1

0

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

CREATE FUNCTION `unsignedSmallIntToSignedSmallInt`(n SMALLINT UNSIGNED) RETURNS SMALLINT
RETURN IF( n > 32767, n - 65536, n );
于 2018-05-10T17:12:48.880 回答