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

zek24

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

у меня так работало
 
  • Автор темы
  • Модер.
  • #3
Не понимаю, этот вариант попробовал одним из первых... сейчас заработало, тогда нет...
 
Обратите внимание, что 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.
 
MySQL умеет работать со строками, например
WHERE CHAR_LENGTH(`image`) < 1
или даже
WHERE CHAR_LENGTH( TRIM(`image`) ) < 1

Для просмотра ссылки Войди или Зарегистрируйся
 
Назад
Сверху