|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
есть запрос Код: sql 1.
поле SKIP может иметь три значения: 1, 0 и NULL Так вот, в результат попадают только те записи, у которых SKIP имеет значение 0. Но ведь NULL тоже не равно 1? т.е. в таких случая обязательно дописывать "or skip is null" Firebird 2.5.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 12:31 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11, NULL в выражениях ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 12:42 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11есть запрос Код: sql 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 менять. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 12:48 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 12:52 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11, Код: sql 1.
Сравнение с учетом null ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 13:16 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
О! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 13:21 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11, SELECT NAME FROM REGIONS WHERE coalesce(SKIP,2) <> 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2015, 11:34 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
нужно сравнить планы, что работает быстрее и использует индексы но первый вариант читабельнее ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2015, 12:47 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
Первый вариант какая-то хитромудрая магия, второй намного нагляднее имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2015, 16:14 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
Fr0sT-BrutalПервый вариант какая-то хитромудрая магия, второй намного нагляднее имхоТолько возникает немой вопрос, почему константа именно 2 :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2015, 16:18 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
наоборот ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2015, 16:41 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
SELECT NAME FROM REGIONS WHERE coalesce(SKIP,2) <> 1 SELECT NAME FROM REGIONS WHERE SKIP is distinct from 1 ни первый, ни второй вариант индексы не используют ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 12:58 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
Неправильно. Проблема в том, что в кляузе WHERE Ещё присутствует lower(NAME) поэтому индексы и не используются :( ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 12:59 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11в кляузе WHERE Ещё присутствует lower(NAME) Case-insensitive collation? Не, не слышал... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 13:05 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11ни первый, ни второй вариант индексы не используют А field <> ... вообще когда-либо использует индекс? (риторический вопрос) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 18:11 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 09:48 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11у меня Win1251 CREATE COLLATION ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 11:12 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
Тогда мне нужно полностью "переделывать" столбец и "переливать" данные из старого в новый? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 11:27 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
на сколько я понял, то "case insensitive" только для UTF8 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 11:27 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11, PXW_CYRL если мне память не отшибло ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 12:18 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
когда это PXW_CYRL вдруг стал регистронезависимым? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 12:21 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11когда это PXW_CYRL вдруг стал регистронезависимым? От самого начала. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 12:32 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11когда это PXW_CYRL вдруг стал регистронезависимым? Ну значит память отшибло ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 12:44 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovX11когда это PXW_CYRL вдруг стал регистронезависимым? От самого начала. только для сортировки, но не для сравнения ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 12:52 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
Сделал так Код: sql 1.
Код: sql 1.
запрос 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 13:12 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
Изменил COLLATE непосредственно у колонки NAME в таблице на NOCASE_COLL выполнил запрос Код: sql 1.
что изменилось изменилось: 1. PLAN (REGIONS INDEX (REDIONS_NAME_IDX1)) - уже индекс используется 2. но результат всё равно = NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 13:19 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11Тогда мне нужно полностью "переделывать" столбец и "переливать" данные из старого в новый? Варианты 1. Переделывать. Новый - перезилив - "переименование". 2. Если очень нужно, то материализовать столбец с нужной кодировкой и коллейтом с помощью триггера. (Это если индекс по функции не помог) 3. Если ширина выборки не радует, то денормализация - связки 1 к 1, и уже там шерстить 4. Если это ключевой момент системы и нужна адекватная скорость, то искать внешние системы и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 13:19 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11Изменил COLLATE непосредственно у колонки NAME в таблице на NOCASE_COLL Так и надо. Применение коллейта на ходу, как использование функции. В индексе то всё по-старому. X111. PLAN (REGIONS INDEX (REDIONS_NAME_IDX1)) - уже индекс используется 2. но результат всё равно = NULL Результат от индекса зависеть не должен. Индекс - внутренний механизм обеспечения выполнения запроса. Такой запрос выдаёт данные? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 13:28 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
X11Изменил COLLATE непосредственно у колонки NAME в таблице на NOCASE_COLL А индекс после этого ты пересоздал? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 13:34 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovX11Изменил COLLATE непосредственно у колонки NAME в таблице на NOCASE_COLL А индекс после этого ты пересоздал? Я не знал, что нужно пересоздавать индекс. Пересоздал. проверил запрос. Всё равно NULL вот доказательство "Город" есть ищу "город" результат null ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 14:10 |
|
WHERE Field <> 1 и значение NULL
|
|||
---|---|---|---|
#18+
скрипт Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 14:22 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1562781]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 164ms |
0 / 0 |