powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / WHERE Field <> 1 и значение NULL
25 сообщений из 31, страница 1 из 2
WHERE Field <> 1 и значение NULL
    #38977269
Фотография 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
...
Рейтинг: 0 / 0
WHERE Field <> 1 и значение NULL
    #38977285
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
WHERE Field <> 1 и значение NULL
    #38977294
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
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
WHERE Field <> 1 и значение NULL
    #38977302
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо
...
Рейтинг: 0 / 0
WHERE Field <> 1 и значение NULL
    #38977342
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

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


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

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

ни первый, ни второй вариант индексы не используют
...
Рейтинг: 0 / 0
WHERE Field <> 1 и значение NULL
    #38981024
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неправильно.
Проблема в том, что в кляузе WHERE Ещё присутствует lower(NAME)
поэтому индексы и не используются :(
...
Рейтинг: 0 / 0
WHERE Field <> 1 и значение NULL
    #38981028
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11в кляузе WHERE Ещё присутствует lower(NAME)
Case-insensitive collation? Не, не слышал...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
WHERE Field <> 1 и значение NULL
    #38981495
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11ни первый, ни второй вариант индексы не используют
А field <> ... вообще когда-либо использует индекс? (риторический вопрос)
...
Рейтинг: 0 / 0
WHERE Field <> 1 и значение NULL
    #38981862
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
WHERE Field <> 1 и значение NULL
    #38981964
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11у меня Win1251
CREATE COLLATION
...
Рейтинг: 0 / 0
WHERE Field <> 1 и значение NULL
    #38981994
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда мне нужно полностью "переделывать" столбец и "переливать" данные из старого в новый?
...
Рейтинг: 0 / 0
WHERE Field <> 1 и значение NULL
    #38981996
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на сколько я понял, то "case insensitive" только для UTF8
...
Рейтинг: 0 / 0
WHERE Field <> 1 и значение NULL
    #38982083
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

PXW_CYRL

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


только для сортировки, но не для сравнения
...
Рейтинг: 0 / 0
WHERE Field <> 1 и значение NULL
    #38982178
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал так
Код: 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
25 сообщений из 31, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / WHERE Field <> 1 и значение NULL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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