Выбрать из sql все пустые строки

Тема в разделе "Базы данных", создана пользователем zek24, 15 окт 2012.

Модераторы: latteo
  1. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    777
    Симпатии:
    231
    Привет,
    казалось простая задача, но уже несколько часов не могу ее решить.
    Итак,
    при помощи PHP залил данные из .тхт в массив, а потом и в sql базу.
    Это товары с описанием, ценой, фото...
    Но т.к. часть фото отсутствовала, значения строк колонки "фото" пустые.
    Я решил вставить туда фото "no-image".
    Прошелся по колонке и заметил, что там, кроме названий фото, есть два значения -
    1) NULL
    2) "пустое значение"
    C nullom справился легко
    Код:
    UPDATE `product` SET `image` = 'data/no_icon.gif' WHERE `product`.`image` = NULL
    Но пустые строки не могу отловить никак... Перепробовал все что знал и не знал...
    ХЕЛП!
     
  2. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    Код:
    UPDATE `product` SET `image` = 'data/no_icon.gif' WHERE `image` = '';
    у меня так работало
     
    zek24 нравится это.
  3. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    777
    Симпатии:
    231
    Не понимаю, этот вариант попробовал одним из первых... сейчас заработало, тогда нет...
     
  4. Darkmind

    Darkmind SNMP maniac

    Регистр.:
    31 май 2006
    Сообщения:
    183
    Симпатии:
    75
    Обратите внимание, что NULL и '' - это разные вещи. Допустим, у нас есть таблица:
    Код:
    CREATE TABLE IF NOT EXISTS `test` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar( 64 ) NOT NULL,
      `caption` varchar(64) DEFAULT NULL,
      PRIMARY KEY (`id`)
    );
    Вставим туда три значения, указав только `name`. Получится, что во всех трёх `caption` будет NULL. Потом отредактируем последнее значение и удалим его еще раз. Скриптом, ну или используя PhpMyAdmin. Получится следующее:
    Код:
    1    alpha    NULL
    2    beta    NULL
    3    gamma    
    Теперь запрос SELECT * FROM `test` WHERE `caption` = '' вернёт только запись с id=3, т.к. NULL это не ''. Чтобы выбрать и NULL'ы переписываем запрос:
    Код:
    SELECT * FROM `test` WHERE `caption` = '' OR `caption` IS NULL
    Во избежание путаницы лучше использовать IS NULL или IS NOT NULL.
     
  5. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.240