我有一些数据存储为unsigned smallint(在mariadb中)。大多数时候,我宁愿将其视为签名的小写。有没有办法将unsigned smallint转换为带符号的smallint?
'CAST'功能在符号之间转换时的行为不符合预期。它显然是为了在字符串和数字之间进行转换,甚至不支持smallint作为争论。
使用手动编码逻辑是最好的方法吗?如:
IF( number > 32767, number - 65536, number )
还是我错过了某种内置的mysql功能?
答案 0 :(得分:0)
我找了一会儿,没有找到任何内置的方法来做到这一点。如果有其他人遇到这个问题,我最终定义了我自己的函数,看起来像:
CREATE FUNCTION `unsignedSmallIntToSignedSmallInt`(n SMALLINT UNSIGNED) RETURNS SMALLINT
RETURN IF( n > 32767, n - 65536, n );