Wicked
Новичок
Операторы сравнения и null
Задался тут вопросом: как сделать так, чтобы при сравнениях операторами <, >, <=, >= значения NULL были "меньше" любых не-NULL-овых значений? Как известно из мануала MySQL:
.
На данный момент я углядел два метода (на примере оператора <):
1) более правильный метод
2) имхо менее правильный, но более которкий, более читаемый, и наверное более быстрый (используя минимальное значение signed bigint):
Что скажет народ?
-~{}~ 06.02.06 18:29:
Забыл добавить:
под val1, val2 подразумеваются как поля таблиц, так и константные значения.
Задался тут вопросом: как сделать так, чтобы при сравнениях операторами <, >, <=, >= значения NULL были "меньше" любых не-NULL-овых значений? Как известно из мануала MySQL:
Код:
mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
| NULL | NULL | NULL | NULL |
+----------+-----------+----------+----------+
На данный момент я углядел два метода (на примере оператора <):
1) более правильный метод
Код:
if(
isnull(val1),
if(
isnull(val2),
0, /* null < null ? */
1 /* null < N ? */
),
if(
isnull(val2),
0, /* N < null ? */
val1 < val2 /* N < M*/
)
)
Код:
ifnull(val1, -9223372036854775808) < ifnull(val2, -9223372036854775808)
-~{}~ 06.02.06 18:29:
Забыл добавить:
под val1, val2 подразумеваются как поля таблиц, так и константные значения.