Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / null - это очень большое число, что ли? / 2 сообщений из 2, страница 1 из 1
24.02.2017, 21:18
    #39410056
Иван88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
null - это очень большое число, что ли?
Всем доброго дня.

Программирую под Android и вот уже около недели застрял над тем, чтобы найти самый дорогой заказ в базе.

Есть вот такая таблица. Работаем исключительно с полем _itemPrice. Как видите, в последней записи это поле пустое. Так понимаю null?

Проблема долгое время заключалась в том, что при попытке найти максимум в поле _itemPrice и с условием, что одно из этих значений не было введено пользователем, получаем 0.0. Что касается нуля, то дело тут, скорее всего, c Android. Но самое главное, что сама база по запросу
Код: sql
1.
SELECT MAX (_itemPrice) FROM deliveries;

возвращает пустоту. Также я пробовал играться с IFNULL -- без результатов.

Случайным образом сегодня попробовал выполнить
Код: sql
1.
SELECT _itemPrice FROM deliveries WHERE _itemPrice < 99999999999999 ORDER BY _itemPrice DESC LIMIT 1;

, и всё получилось.

Сейчас беспокоит то, что это костыль.

Может, пожалуйста, кто-то:
1) объяснить как так получается, что null оказывается максимумом в примитивном запросе?
2) предложить решение поэлегантнее.


Буду очень признателен. Спасибо, что прочитали.

P.S. Решая аналогичную задачу, но только находя самый дешёвый заказ, всё работало отлично. Возможно помогла конструкция
Код: sql
1.
SELECT MIN (NULLIF (
...
Рейтинг: 0 / 0
25.02.2017, 01:13
    #39410104
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
null - это очень большое число, что ли?
Иван88,
1. Не null, - пустая строка.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT _id, 
  case 
    when _itemPrice is null then -1 
    when _itemPrice = '' then -10 
    else _itemPrice 
  end _ip 
FROM deliveries;

SELECT '' > 99999999999999;


2. Заменить пустую строку на null
Код: sql
1.
2.
3.
UPDATE deliveries SET _itemPrice = null WHERE _itemPrice = '';

SELECT MIN(_itemPrice), MAX(_itemPrice) FROM deliveries; 
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / null - это очень большое число, что ли? / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]