Функция SQL Max не возвращает правильное максимальное значение - PullRequest
0 голосов
/ 15 октября 2018

Функция SQL max не дает правильный результат для

select max (liri_appid) from idea_interface; 

Результат: 90802, но я знаю, что его максимальное значение равно 15454545

Та же проблема, с которой я сталкиваюсь при выполнении заказапо пункту.Результаты приходят как

 1
 13
 2
 23
 4
 5
 6
 69
 777
 9

Не знаю почему.

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Ваш тип поля определенно является Text типом, который он упорядочивает по их ASCII значению кода, как показано ниже:

1, 12, 13, 2, 20, 21, ...

Изменить тип поля на числовое поле.

0 голосов
/ 15 октября 2018

LIRI_APPID VARCHAR2 (20 байт)

liri_appid определяется как varchar2.Это означает, что он использует семантику строк.Значение ASCII 9 выше, чем значение ASCII 1, поэтому '90802' больше, чем '15454545'.

По той же причине '13' ниже, чем '2', следовательно, ваша странность заказа,

Обходной путь -

 select max (to_number( (liri_appid))
 from idea_interface;

и

order by to_number( (liri_appid) asc

Надлежащее решение состоит в том, чтобы изменить модель данных, чтобы liri_appid определялось как число.Использование правильного типа данных всегда является лучшей политикой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...