Приведение к подписанному smallint в mysql / mariadb - PullRequest
0 голосов
/ 10 мая 2018

У меня есть некоторые данные, хранящиеся в виде unsigned smallint (в mariadb). В большинстве случаев я предпочел бы рассматривать это как подписанный smallint. Можно ли как-нибудь привести беззнаковый smallint к подписанному smallint?

Функция «CAST» не работает должным образом для преобразования знаков. Он явно предназначен для преобразования между строками и числами и даже не поддерживает smallint в качестве аргумента.

Это лучший способ сделать это с помощью логики с ручным кодированием? Такие как:

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

или мне не хватает какой-то встроенной функциональности mysql?

1 Ответ

0 голосов
/ 10 мая 2018

Я искал некоторое время и не нашел никакого встроенного способа сделать это. Если кто-то еще сталкивался с этой проблемой, я определил свою собственную функцию, которая выглядела бы примерно так:

CREATE FUNCTION `unsignedSmallIntToSignedSmallInt`(n SMALLINT UNSIGNED) RETURNS SMALLINT
RETURN IF( n > 32767, n - 65536, n );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...