#mysql
Вопрос:
Я использую тип данных da bigint без знака в MySQL 5.7 и хочу вывести перевернутое значение с помощью запроса. Таким образом, 30 становится -30.
SELECT
mynumber * (- 1) as value
Это возвращает ошибку:
Data truncation: BIGINT UNSIGNED value is out of range
Как это можно сделать без изменения типа данных?
Комментарии:
1. Я говорю о отображении, а не о сохранении.
Ответ №1:
Без знака могут содержаться только положительные значения. Вам нужно привести к знаку, чтобы получить отрицательное значение.
SELECT CAST(mynumber AS SIGNED) * -1 AS value
Однако это приведет к переполнению, если значение mynumber
больше, чем наибольшее положительное значение со знаком (значения без знака могут быть в два раза больше, чем соответствующие типы со знаком).
Если это только для отображения, вы можете просто объединить -
символ:
SELECT CONCAT('-', mynumber) AS value