Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / WHERE Field <> 1 и значение NULL / 25 сообщений из 31, страница 1 из 2
05.06.2015, 12:31
    #38977269
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
есть запрос
Код: sql
1.
SELECT NAME FROM REGIONS WHERE SKIP <> 1


поле SKIP может иметь три значения: 1, 0 и NULL
Так вот, в результат попадают только те записи, у которых SKIP имеет значение 0.
Но ведь NULL тоже не равно 1?
т.е. в таких случая обязательно дописывать "or skip is null"

Firebird 2.5.4
...
Рейтинг: 0 / 0
05.06.2015, 12:42
    #38977285
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
...
Рейтинг: 0 / 0
05.06.2015, 12:48
    #38977294
-
-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
X11есть запрос
Код: sql
1.
SELECT NAME FROM REGIONS WHERE SKIP <> 1


поле SKIP может иметь три значения: 1, 0 и NULL
Так вот, в результат попадают только те записи, у которых SKIP имеет значение 0.
Но ведь NULL тоже не равно 1?
т.е. в таких случая обязательно дописывать "or skip is null"

Firebird 2.5.4
(SKIP <> 1) это null, при SKIP = null. Такова логика sql-серверов.
"SKIP integer not null default 0", если можно, и эта проблема уйдёт. Хотя в триггере лучше - там можно автоматом null на 0 менять.
...
Рейтинг: 0 / 0
05.06.2015, 12:52
    #38977302
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
спасибо
...
Рейтинг: 0 / 0
05.06.2015, 13:16
    #38977342
Шавлюк Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
X11,

Код: sql
1.
SELECT NAME FROM REGIONS WHERE SKIP is distinct from 1


Сравнение с учетом null
...
Рейтинг: 0 / 0
05.06.2015, 13:21
    #38977350
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
О!
...
Рейтинг: 0 / 0
06.06.2015, 11:34
    #38978065
Dmitriy_3206
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
X11,

SELECT NAME FROM REGIONS WHERE coalesce(SKIP,2) <> 1
...
Рейтинг: 0 / 0
07.06.2015, 12:47
    #38978380
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
нужно сравнить планы, что работает быстрее и использует индексы
но первый вариант читабельнее
...
Рейтинг: 0 / 0
09.06.2015, 16:14
    #38980293
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
Первый вариант какая-то хитромудрая магия, второй намного нагляднее имхо
...
Рейтинг: 0 / 0
09.06.2015, 16:18
    #38980295
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
Fr0sT-BrutalПервый вариант какая-то хитромудрая магия, второй намного нагляднее имхоТолько возникает немой вопрос, почему константа именно 2 :-)
...
Рейтинг: 0 / 0
09.06.2015, 16:41
    #38980329
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
наоборот
...
Рейтинг: 0 / 0
10.06.2015, 12:58
    #38981020
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
SELECT NAME FROM REGIONS WHERE coalesce(SKIP,2) <> 1
SELECT NAME FROM REGIONS WHERE SKIP is distinct from 1

ни первый, ни второй вариант индексы не используют
...
Рейтинг: 0 / 0
10.06.2015, 12:59
    #38981024
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
Неправильно.
Проблема в том, что в кляузе WHERE Ещё присутствует lower(NAME)
поэтому индексы и не используются :(
...
Рейтинг: 0 / 0
10.06.2015, 13:05
    #38981028
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
X11в кляузе WHERE Ещё присутствует lower(NAME)
Case-insensitive collation? Не, не слышал...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.06.2015, 18:11
    #38981495
afgm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
X11ни первый, ни второй вариант индексы не используют
А field <> ... вообще когда-либо использует индекс? (риторический вопрос)
...
Рейтинг: 0 / 0
11.06.2015, 09:48
    #38981862
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
Dimitry SibiryakovCase-insensitive collation

http://www.destructor.de/firebird/caseinsensitivesearch.htm you can use a new Case Insensitive Collation named UNICODE_CI for the UTF8 character set (Unicode).

у меня Win1251
...
Рейтинг: 0 / 0
11.06.2015, 11:12
    #38981964
afgm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
X11у меня Win1251
CREATE COLLATION
...
Рейтинг: 0 / 0
11.06.2015, 11:27
    #38981994
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
Тогда мне нужно полностью "переделывать" столбец и "переливать" данные из старого в новый?
...
Рейтинг: 0 / 0
11.06.2015, 11:27
    #38981996
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
на сколько я понял, то "case insensitive" только для UTF8
...
Рейтинг: 0 / 0
11.06.2015, 12:18
    #38982083
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
X11,

PXW_CYRL

если мне память не отшибло
...
Рейтинг: 0 / 0
11.06.2015, 12:21
    #38982087
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
когда это PXW_CYRL вдруг стал регистронезависимым?
...
Рейтинг: 0 / 0
11.06.2015, 12:32
    #38982116
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
X11когда это PXW_CYRL вдруг стал регистронезависимым?
От самого начала.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.06.2015, 12:44
    #38982129
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
X11когда это PXW_CYRL вдруг стал регистронезависимым?
Ну значит память отшибло
...
Рейтинг: 0 / 0
11.06.2015, 12:52
    #38982147
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
Dimitry SibiryakovX11когда это PXW_CYRL вдруг стал регистронезависимым?
От самого начала.


только для сортировки, но не для сравнения
...
Рейтинг: 0 / 0
11.06.2015, 13:12
    #38982178
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WHERE Field <> 1 и значение NULL
Сделал так
Код: sql
1.
DROP COLLATION NOCASE_COLL;


Код: sql
1.
CREATE COLLATION NOCASE_COLL FOR WIN1251 FROM PXW_CYRL CASE INSENSITIVE;




запрос
SELECT FIRST 1 ID FROM REGIONS WHERE NAME COLLATE NOCASE_COLL = :SNAME AND SKIP IS DISTINCT FROM 1[/SRC]

2 проблемы:
1. PLAN (REGIONS NATURAL)
2. результат = NULL
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / WHERE Field <> 1 и значение NULL / 25 сообщений из 31, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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