Select если поле заполнено

marioo

Новичок
Подскажите как правильно напистаь запрос, нужно сделать выборку SELECT `123` FROM `ibf` Where ` title `
 

KorP

Новичок
заполненость поля проверять при помощи JS, дальше уже пускать запрос если всё ок
 

iceman

говнокодер
SELECT `123` FROM `ibf` Where ` title ` != null

либо

SELECT `123` FROM `ibf` Where ` title ` is not null
 

Dovg

Продвинутый новичок
iceman
Код:
mysql> select 1 != null;
+-----------+
| 1 != null |
+-----------+
|      NULL |
+-----------+
1 row in set (0.00 sec)
mysql> select 1 is not null;
+---------------+
| 1 is not null |
+---------------+
|             1 |
+---------------+
1 row in set (0.00 sec)
Как бы не одно и то же, ага.
 

marioo

Новичок
SELECT `123` FROM `ibf` Where ` title ` is not null //так выводит где пусто

а вот наоборот

SELECT `123` FROM `ibf` Where ` title ` is null
или
SELECT `123` FROM `ibf` Where ` title ` != null

ничего не выводит.
 

iceman

говнокодер
!= null - это чото кусочек воспоминания, когда еще на мускуле сидел, по этому я дал 2 варианта.

> SELECT `123` FROM `ibf` Where ` title ` is not null //так выводит где пусто
чо тупишь?

> and text != ""

вот это да, что за идиотизм? о_О
 

jonjonson

Охренеть
iceman, это в php null == null и null === null и null == "" и null == 0
В MySQL и не только null не является значением как таковым (пустым значение) и там null не равен и не неравен null. Отсутсвие значений не может быть равным или не равным другому отсутсвию значения. Значение поля либо неопределено null (если позволяет определение поял), либо определено not null
А сравнивать уже можно именно значения. По этой причине для полей при определении которых разрешено отсутсвие в них значения (NULL) приходится проверять как на наличие значения (IS NOT NULL), так и на само значение (поле содержит пустую строку).
 

iceman

говнокодер
ужас, это же идиотизм.
"" - это зхначение НЕ определено и должно быть null! автоматом. тупая база
 

jonjonson

Охренеть
iceman, вы не правы. Может и 0 на NULL заменить?
Ещё раз NULL - это отсутсвие значения, а не какая либо его форма. Пустая строка - это такая же строка как и все остальные.
 
  • Like
Реакции: Dovg

Mols

Новичок
ужас, это же идиотизм.
"" - это зхначение НЕ определено и должно быть null! автоматом. тупая база
это просто ппц.
Это точно Вы (iceman) написали? Человек 4-ре года на форуме и больше тысячи постов?
Как страшно жить...(с) :D
 

Dovg

Продвинутый новичок
Кстати-2 mySQL тоже тупит малость
Нифига.
в psql то же самое:
Код:
psql (8.4.7)
Type "help" for help.
postgres=# create TEMP table trololo (id int null);
CREATE TABLE
postgres=# insert into trololo values (1),(2),(3),(null),(null),(42);
INSERT 0 6
postgres=# select * from trololo where id != 1;
 id
----
  2
  3
 42
(3 rows)
Null по смыслу ближе всего к математическому понятию неопределенности. С неопределенным значением нельзя сравнивать на равенство. База не знает равен ли null единице, т.к. null - это не определен.
 

iceman

говнокодер
кто говорит про равенство, не равенство

я говорю запрос col1 is not null выведит строки где col1 пустое!

если я вставлю insert into tbl1(pk1, col1) values (1, '');

то это строка по идее должна попасть в запрос "col1 is not null"

чо тупите! в оракле по крайней мере так.

про равенство я уже сказал, что это было предложение попробовать.
 

iceman

говнокодер
> where col1 != 'xz';

такое ваще нельзя писать, обычно когда такое пишут на null и не рассчитывают..

лучше перечислить список значений в in либо not in
 

phprus

Moderator
Команда форума
ужас, это же идиотизм.
"" - это зхначение НЕ определено и должно быть null! автоматом. тупая база
Я конечно понимаю, что ораклоид это состояние души, но не до такой-же степени!
"" - это значение пустая строка, а null - НЕ значение, а состояние поля, которое говорит что значение НЕ определено. И то, что в Oracle есть такой баг (который сам Oracle считает фичей) это проблемы Oracle, а не всех остальных СУБД.

Mols
Все сходится. iceman - Oracleоид со стажем, отсюда и профессиональная деформация считать присутствующие в Oracle баги багами других СУБД.

чо тупите! в оракле по крайней мере так.
Это по сути баг Oracle. И, если мне память не изменяет, то SQL так делать запрещает. Да и все другие известные мне СУБД не путают значение пустой строки и состояние NULL.
 

iceman

говнокодер
Chusha
в оракле так, и мускуле должно быть так, если не так то я считаю это недостатком, причем тут матчасть?

phprus
по этому я и предложил вариант col1!='' отдельно, так как чото в воспоминаниях есть ))

это не значит что я попутал значения null и пустой строки и после этого наезжать нужно.

я считаю что приравнивать вставку '' и null к одному вернее и удобнее. в большинстве случаев.
 

jonjonson

Охренеть
Кстати, ТС не совсем корректно озвучил задачу: Select если поле заполнено
1. Кто-то скажет, что поле заполнено если оно не NULL.
2. А кто-то скажет - что и не в виде пустой строки.
Надо бы у ТС уточнить.
Если первое, то iceman прав. Достаточно что бы записи в поле были NOT NULL
Если же второе, то придётся проверять на пустую строку...
 
Сверху