Używam mysql i muszę zaktualizować kolumnę z wartością null. Próbowałem tego na wiele różnych sposobów, a najlepsze, co otrzymałem, to pusty ciąg.
Czy jest do tego specjalna składnia?
Używam mysql i muszę zaktualizować kolumnę z wartością null. Próbowałem tego na wiele różnych sposobów, a najlepsze, co otrzymałem, to pusty ciąg.
Czy jest do tego specjalna składnia?
Odpowiedzi:
Brak specjalnej składni:
CREATE TABLE your_table (some_id int, your_column varchar(100));
INSERT INTO your_table VALUES (1, 'Hello');
UPDATE your_table
SET your_column = NULL
WHERE some_id = 1;
SELECT * FROM your_table WHERE your_column IS NULL;
+---------+-------------+
| some_id | your_column |
+---------+-------------+
| 1 | NULL |
+---------+-------------+
1 row in set (0.00 sec)
NULL
to specjalna wartość w SQL. Aby wyzerować właściwość, wykonaj następujące czynności:
UPDATE table SET column = NULL;
Użyj IS
zamiast =
To rozwiąże Twój problem przykładowej składni:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
Pamiętaj, aby sprawdzić, czy Twoja kolumna może być pusta. Możesz to zrobić za pomocą
mysql> desc my_table;
Jeśli twoja kolumna nie może mieć wartości null, po ustawieniu wartości na null będzie to wartość rzutowania na nią.
Oto przykład
mysql> create table example ( age int not null, name varchar(100) not null );
mysql> insert into example values ( null, "without num" ), ( 2 , null );
mysql> select * from example;
+-----+-------------+
| age | name |
+-----+-------------+
| 0 | without num |
| 2 | |
+-----+-------------+
2 rows in set (0.00 sec)
mysql> select * from example where age is null or name is null;
Empty set (0.00 sec)
Dla tych, którzy mają podobny problem, zauważyłem, że podczas „symulacji” SET = NULL
zapytania PHPMyAdmin generuje błąd. To czerwony śledź ... po prostu uruchom zapytanie i wszystko będzie dobrze.
W powyższych odpowiedziach zaproponowano wiele sposobów i powtórzeń tego samego. Szukałem odpowiedzi, jak wspomniano, ale nie mogłem tu znaleźć.
Ale w przeciwieństwie do powyższego pytania „zaktualizuj kolumnę o wartość null” Może być „ZAKTUALIZUJ WSZYSTKIE WIERSZE W KOLUMNIE DO NULL”
W takiej sytuacji działa dalej
update table_name
set field_name = NULL
where field_name is not NULL;
is
is not
działa również w mysql
użyj is
zamiast=
Na przykład: Select * from table_name where column is null
Innym możliwym powodem pustego ciągu zamiast prawdziwej wartości null jest to, że pole jest indeksem lub jest częścią indeksu. Przydarzyło mi się to: używając phpMyAdmin, wyedytowałem strukturę pola w jednej z moich tabel, aby zezwolić na wartości NULL, zaznaczając pole wyboru „ Null ”, a następnie naciskając przycisk „ Zapisz ”. Wyświetlany był komunikat „Cena stołu została pomyślnie zmieniona ”, więc założyłem, że zmiana nastąpiła - tak się nie stało. Po wykonaniu UPDATE w celu ustawienia wszystkich tych pól na NULL , zamiast tego ustawiono je na puste ciągi , więc ponownie przyjrzałem się strukturze tabeli i zobaczyłem, że „ Null„kolumna dla tego pola została ustawiona na„ nie ”. Wtedy zdałem sobie sprawę, że to pole było częścią klucza podstawowego !
Jeśli chcesz ustawić wartość null za pomocą aktualizacji zapytania ustaw wartość kolumny na NULL (bez cudzysłowów) zaktualizuj nazwę tabeli ustaw nazwę kolumny = NULL
Jeśli jednak bezpośrednio edytujesz wartość pola w środowisku roboczym mysql, użyj klawisza (Esc + del), aby wstawić wartość null do wybranej kolumny
jeśli podążasz
UPDATE table SET name = NULL
wtedy nazwa to "", a nie NULL IN MYSQL oznacza zapytanie
SELECT * FROM table WHERE name = NULL
nie działa lub rozczarowuje się
Podejrzewam, że problem polega na tym, że cudzysłowy zostały wprowadzone jako literały w wartości ciągu. Możesz ustawić te kolumny na null za pomocą:
UPDATE table SET col=NULL WHERE length(col)<3;
Powinieneś oczywiście najpierw sprawdzić, czy te wartości są rzeczywiście "" takie jak:
SELECT DISTINCT(col) FROM table WHERE length(col)<3;