Sto usando mysql e ho bisogno di aggiornare una colonna con un valore nullo. Ho provato questo in molti modi diversi e il migliore che ho ottenuto è una stringa vuota.
C'è una sintassi speciale per fare questo?
Sto usando mysql e ho bisogno di aggiornare una colonna con un valore nullo. Ho provato questo in molti modi diversi e il migliore che ho ottenuto è una stringa vuota.
C'è una sintassi speciale per fare questo?
Risposte:
Nessuna sintassi speciale:
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
è un valore speciale in SQL. Quindi per annullare una proprietà, procedere come segue:
UPDATE table SET column = NULL;
Usa al IS
posto di =
Ciò risolverà la sintassi del tuo esempio di problema:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
Ricorda di vedere se la tua colonna può essere nulla. Puoi farlo usando
mysql> desc my_table;
Se la tua colonna non può essere nulla, quando imposti il valore su null sarà il valore cast su di essa.
Ecco un esempio
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)
Per coloro che si trovano ad affrontare un problema simile, ho scoperto che durante la "simulazione" di una SET = NULL
query, PHPMyAdmin generava un errore. È un'aringa rossa .. basta eseguire la query e tutto andrà bene.
Nelle risposte sopra, molti modi e ripetizioni sono stati suggeriti per lo stesso. Ho continuato a cercare una risposta come menzionato è la domanda ma non sono riuscito a trovare qui.
Ma al contrario della domanda precedente "aggiorna una colonna con un valore nullo" Potrebbe essere "AGGIORNA TUTTE LE FILE DELLA COLONNA A NULL"
In una situazione del genere, a seguito di lavori
update table_name
set field_name = NULL
where field_name is not NULL;
is
come pure is not
lavora a mysql
uso is
invece di=
Per esempio: Select * from table_name where column is null
Un altro possibile motivo per la stringa vuota, anziché un vero null è che il campo è un indice o fa parte di un indice. Questo mi è successo: usando phpMyAdmin, ho modificato la struttura di un campo in una delle mie tabelle per consentire i NULL selezionando la casella di controllo " Null " e premendo il pulsante " Salva ". " Il prezzo della tabella è stato modificato con successo " è stato visualizzato, quindi ho pensato che il cambiamento fosse avvenuto, ma non è stato così. Dopo aver eseguito un AGGIORNAMENTO per impostare tutti i campi su NULL , sono stati invece impostati su stringhe vuote , quindi ho dato nuovamente un'occhiata alla struttura della tabella e ho visto che " Null"la colonna per quel campo era impostata su" no ". Fu allora che mi resi conto che il campo faceva parte della chiave primaria !
Se si desidera impostare un valore null utilizzando la query di aggiornamento impostare il valore della colonna su NULL (senza virgolette) aggiornare tablename set nome colonna = NULL
Tuttavia, se si sta modificando direttamente il valore del campo all'interno del workbench mysql, utilizzare la sequenza di tasti (Esc + del) per inserire il valore null nella colonna selezionata
se segui
UPDATE table SET name = NULL
allora il nome è "" non NULL IN MYSQL significa che la tua query
SELECT * FROM table WHERE name = NULL
non lavorare o deluderti
Sospetto che il problema qui sia che le virgolette sono state inserite come valori letterali nel valore della stringa. Puoi impostare queste colonne su null usando:
UPDATE table SET col=NULL WHERE length(col)<3;
Ovviamente dovresti prima verificare che questi valori siano effettivamente "" con qualcosa del tipo:
SELECT DISTINCT(col) FROM table WHERE length(col)<3;