Czy jest możliwe wykonanie instrukcji select, która przyjmuje tylko wartości NOT NULL?
Obecnie używam tego:
SELECT * FROM table
A potem muszę odfiltrować wartości zerowe za pomocą pętli php.
Czy istnieje sposób na:
SELECT * (that are NOT NULL) FROM table
?
W tej chwili, gdy wybieram * otrzymuję val1, val2, val3, null, val4, val5, null, null itp.… Ale chcę tylko uzyskać wartości, które nie są null w moim wyniku. Czy jest to możliwe bez filtrowania za pomocą pętli?
Odpowiedzi:
Powinieneś użyć
IS NOT NULL
. (Operatory porównania=
i<>
oba dająUNKNOWN
zNULL
po obu stronach wyrażenia.)Dla kompletności wspomnę, że w MySQL możesz również zanegować zerowy bezpieczny operator równości, ale nie jest to standardowy SQL.
Edytowane w celu odzwierciedlenia komentarzy. Wygląda na to, że Twój stół może nie być w pierwszej normalnej formie. W takim przypadku zmiana struktury może ułatwić zadanie. Kilka innych sposobów na zrobienie tego ...
Wadą powyższego jest to, że skanuje tabelę wiele razy jeden raz dla każdej kolumny. Można tego uniknąć poniżej, ale nie testowałem tego w MySQL.
źródło
CASE
instrukcji, a nieCASE
funkcji. Czy nie powinno byćEND CASE
zamiast tegoEND
w tejSELECT CASE ...
części?idx
rom pierwszySELECT
pochodzi zidx
drugiegoSELECT
? CoCASE
oświadczenie próbuje osiągnąć? CoSELECT
właściwie robi drugi ? I robisz połączenie wewnętrzne, a nie krzyżowe, prawda?SELECT * FROM table WHERE * IS NOT NULL AND primary_key="somevalue"
)Możesz odfiltrować wiersze zawierające wartość NULL w określonej kolumnie:
Jeśli chcesz odfiltrować wiersze zawierające null w dowolnej kolumnie, spróbuj tego:
Aktualizacja: na podstawie twoich komentarzy, może tego chcesz?
Zgadzam się z Martinem, że jeśli musisz to zrobić, prawdopodobnie powinieneś zmienić projekt bazy danych.
źródło
*
zwracają? Może podaj przykładowe dane w swoim pytaniu, ponieważ z powyższego komentarza nie wynika, czy to wszystko jedna kolumna.Jedyną wadą tego podejścia jest to, że można porównać tylko 5 kolumn, po czym wynik zawsze będzie fałszywy, więc porównuję tylko te pola, które mogą być
NULL
.źródło
Znalazłem to rozwiązanie:
To zapytanie wybiera ostatnią wartość inną niż null dla każdej kolumny.
Przykład
Jeśli masz stolik:
dostajesz:
Pytanie
Mam nadzieję, że ci pomogę.
źródło
Korzystam z
\!
polecenia w MySQL, aby wyodrębnić wartości NULL z powłoki:Działa najlepiej z poprawnym,
.my.cnf
gdzie podano bazę danych / nazwę użytkownika / hasło. W ten sposób po prostu trzeba otoczyćselect
z\! mysql e
i| grep -v NULL
.źródło
Następujące zapytanie działa dla mnie
kiedy ustawię domyślną wartość kolumny „NULL”, to
a kiedy ustawię wartość domyślną, nic
źródło
Tak, użyj
NOT NULL
w swoim zapytaniu jak poniżej.źródło
MYSQL NIE JEST NULL Z POŁĄCZENIAMI I WYBIERANIE, WSTAWIANIE DO, USUWANIE I OPERATOR LOGICZNY JAK LUB NIE
źródło
źródło