Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поле содержит NULL, но искать по NULL СУБД отказыв, Глюки с NULL значениями 
V
    Опции темы
NumLock
Дата 5.8.2008, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 30.7.2006
Где: Иркутск

Репутация: нет
Всего: нет



Занимался конвертированием базы с изменением структуры. Избрал следующий алгоритм: создается аналогичная исходной таблица в базе MySQL в которой все поля типа TEXT, и одно AUTO_INCREMENT поле ID. Перегоняем туда данные из заранее приготовленного CSV. Затем SQL-манипуляциями приводим таблицу к человеческому виду и делаем на ней ALTER TABLE, чтобы поля имели нужные типы.

Проблема в следующем: в таблице есть индексное поле, ссылающееся на таблицу справочник. Раньше индексом был некоторый строковый код, сейчас, я хочу индексировать по-человечески через ID. Грубо говоря, у меня в таблице есть поле Zavod, и есть таблица-справочник, в котором лежат названия заводов и их коды. Но некоторым кодам в основной таблице нет соответствующих записей в таблице справочнике. Я выполняю запрос: 
Код

UPDATE mainTable SET Zavod = (SELECT ID FROM Factory WHERE Code = Zavod); 

Все хорошо, но теперь некоторые поля в главной таблице имеют значение NULL. Выхожу из этой ситуации так: 
Код

UPDATE mainTable SET Zavod = newEmptyID WHERE Zavod = NULL

Где newEmptyID - значение записи в таблице справочнике, соответствующее пустому коду.
И вроде все хорошо, только после выполнения второго запроса в таблице все ещё есть записи у которых поле Zavod = NULL. Что там лежит? Пробовал во втором запросе вместо NULL использовать '', не помогает.

P.S. Сорри, что так длинно, не смог изложить свои мысли короче.
PM MAIL ICQ Skype Jabber   Вверх
skyboy
Дата 5.8.2008, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



NULL не сравнивается. насколько я помню, даже NULL = NULL вернет false. для проверки на NULLевость надо использовать конструкцию "is NULL"
PM MAIL   Вверх
NumLock
Дата 5.8.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 30.7.2006
Где: Иркутск

Репутация: нет
Всего: нет



Уже решил проблему другим способом, а за поводу NULL, спасибо, буду знать. smile
PM MAIL ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0418 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.