Код (Text): SELECT * FROM table WHERE `title` LIKE '%квартира%' OR `description` LIKE '%квартира%' AND price <=1000000 пробовал добавлять разные конструкции для исключения NULL, не помогает, у price дефолтное значение NULL, подскажите с запросом как исключить не прибегая к изменению дефолтного значения price
в дефолте NULL, но в полях и такое тоже есть но оно исключается через AND price != '' Код (Text): SELECT * FROM table WHERE `title` LIKE '%квартира%' OR `description` LIKE '%квартира%' AND price <=1000000 AND price != '' AND `price` IS NOT NULL все равно выходят с NULL
вот так получилось убить NULL Код (Text): SELECT * FROM table WHERE `title` LIKE '%квартира%' AND `description` LIKE '%квартира%' AND NOT(price IS NULL OR price = '')
Выражение: [sql]WHERE `title` LIKE '%квартира%' OR `description` LIKE '%квартира%' AND price <=1000000 AND price != '' AND `price` IS NOT NULL [/sql] не равно выражению: [sql]WHERE `title` LIKE '%квартира%' AND `description` LIKE '%квартира%' AND NOT(price IS NULL OR price = '')[/sql] ибо последнее выражение равно: [sql]WHERE `title` LIKE '%квартира%' AND `description` LIKE '%квартира%' AND price IS NOT NULL and price <> ''[/sql]
Тогда правильнее наверное: Код (Text): SELECT * FROM table WHERE `title` LIKE '%квартира%' AND `description` LIKE '%квартира%' AND price >=1000000 AND NOT(price= '') NOT вроде как исключает значения NULL или можно получше сделать?
С какой стати? Вы сначала определитесь: [sql]LIKE '%квартира%' OR `description` LIKE '%квартира%'[/sql] или [sql]LIKE '%квартира%' and `description` LIKE '%квартира%'[/sql] а потом уже двигайтесь дальше
Если нам нужно найти по слову %квартира% в полях `title` или в `description` ценой до 10000 то так правильно: Код (Text): SELECT * FROM table WHERE (`title` LIKE '%квартира%' OR `description` LIKE '%квартира%') AND (price IS NOT NULL AND price != '' AND price <=10000) ?
Вроде работает, но выводит цены некоторые с пробелами где юзеры запостили не правильно а поле там по неграмотности было выставлено не INT а VARCHAR, сейчас выставить поле в INT, сделать обработчик на php что бы удалил пробелы или они сами при INT удалятся?
Понятия не имею. MSSQL попытался бы преобразовать и при невозможности выдал бы ошибку и не стал бы менять тип поля. Причем '123' он еще преобразует, а вот '123 ' уже вряд ли. Что сделает MySQL не знаю, но думаю привести к численному формату стоит. Только наверно не к INT, а какому нибудь decimal(11,2)