powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сравнение с NULL
10 сообщений из 10, страница 1 из 1
Сравнение с NULL
    #38862163
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В базу поступают записи. Как новые, так и старые. У каждой записи есть идентификатор. Проблема в том, что идентификаторы могут не совпадать, а записи считаются идентичными. Определен набор полей (5 штук), при равенстве которых, записи считаются идентичными. Логику INSERT or UPDATE хочу завернуть в процедуру. Поля nullable, а заказчик, хочет логику
NULL vs ANY = TRUE.

Т.е. повесить уникальный ключ и дергать On DUPLICATE KEY UPDATE не получится. Вижу два варианта решения:
1) делать курсор с условиями вида
Код: sql
1.
2.
3.
((field1 = val1) OR
(field1 IS NULL) OR
(val1 IS NULL)) AND ...



2) Клеить PREPARED STATEMENT

Может, кто чего потолковей посоветует?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Сравнение с NULL
    #38862168
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

А можно маленький пример?
Что-то формулу "NULL vs ANY = TRUE" осознать не получается.
...
Рейтинг: 0 / 0
Сравнение с NULL
    #38862171
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftА можно маленький пример?
NULL равно всему. Т.е. любое сравнение с NULL должно дать TRUE. Если поле или сравниваемое значение - NULL, то сравнение по этому полю не учитывается

_Vasilisk_2) Клеить PREPARED STATEMENTС этим уже обломGenerally, statements not permitted in SQL prepared statements are also not permitted in stored programs
...
Рейтинг: 0 / 0
Сравнение с NULL
    #38862176
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может таки уникальный ключ подойдет?
http://dev.mysql.com/doc/refman/5.5/en/create-table.html For all engines, a UNIQUE index permits multiple NULL values for columns that can contain NULL.
...
Рейтинг: 0 / 0
Сравнение с NULL
    #38862305
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftА может таки уникальный ключ подойдет?Нет.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE test (
  ID INTEGER(11) NOT NULL AUTO_INCREMENT,
  IDX1 INTEGER(11) DEFAULT NULL,
  IDX2 INTEGER(11) DEFAULT NULL,
  VAL INTEGER(11) DEFAULT NULL,
  PRIMARY KEY (ID),
  UNIQUE KEY IDX1 (IDX1, IDX2)
);

INSERT INTO test (`IDX1`, `IDX2`, `VAL`) VALUES
(1, 2, 3),
(1, NULL, 4)
ON DUPLICATE KEY UPDATE
  `VAL` = VALUES(`VAL`);

В итоге
IDVALIDX1IDX2112321NULL4
а хотелось
IDVALIDX1IDX21124
...
Рейтинг: 0 / 0
Сравнение с NULL
    #38862314
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если вставка будет в обратном порядке?
Код: sql
1.
2.
INSERT INTO test (`IDX1`, `IDX2`, `VAL`) VALUES (1, NULL, 4)
INSERT INTO test (`IDX1`, `IDX2`, `VAL`) VALUES (1, 2, 3)

что должно получиться?
...
Рейтинг: 0 / 0
Сравнение с NULL
    #38862319
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftА если вставка будет в обратном порядке?1 NULL 3
...
Рейтинг: 0 / 0
Сравнение с NULL
    #38862526
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_NULL равно всему. Т.е. любое сравнение с NULL должно дать TRUE.

Упс. А я всегда считал что NULL ничему не равно, даже "сам себе" ... то есть любое сравнение с NULL всегда дает false ... почему и нельзя повесить уникальный ключ .. раньше було.

Не подскажите с какой версии Мускуля оно изменилось?

Если надо вешать уник. ключ, то откажитесь от полей IS NULL сделайте значение по умолчанию ... 0 скажем.
...
Рейтинг: 0 / 0
Сравнение с NULL
    #38862578
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109А я всегда считал что NULL ничему не равно, даже "сам себе" ...Так и есть. Читайте внимательно топик
_Vasilisk_ заказчик, хочет логику NULL vs ANY = TRUE.
...
Рейтинг: 0 / 0
Сравнение с NULL
    #38862835
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Arhat109А я всегда считал что NULL ничему не равно, даже "сам себе" ...Так и есть. Читайте внимательно топик
_Vasilisk_ заказчик, хочет логику NULL vs ANY = TRUE.Ну раз он "хочет", то пусть честно разрабатывает соотв. теорию и СУБД под неё, а только потом начнёте работать вы :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сравнение с NULL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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