Ich verwende MySQL und muss eine Spalte mit einem Nullwert aktualisieren. Ich habe dies auf viele verschiedene Arten versucht und das Beste, was ich bekommen habe, ist eine leere Zeichenfolge.
Gibt es dafür eine spezielle Syntax?
Ich verwende MySQL und muss eine Spalte mit einem Nullwert aktualisieren. Ich habe dies auf viele verschiedene Arten versucht und das Beste, was ich bekommen habe, ist eine leere Zeichenfolge.
Gibt es dafür eine spezielle Syntax?
Antworten:
Keine spezielle Syntax:
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
ist ein spezieller Wert in SQL. Gehen Sie folgendermaßen vor, um eine Eigenschaft auf Null zu setzen:
UPDATE table SET column = NULL;
Verwenden Sie IS
anstelle von =
Dies löst Ihre Problembeispielsyntax:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
Denken Sie daran, zu prüfen, ob Ihre Spalte null sein kann. Sie können das mit tun
mysql> desc my_table;
Wenn Ihre Spalte nicht null sein kann und Sie den Wert auf null setzen, ist dies der Umwandlungswert.
Hier ein Beispiel
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)
Für diejenigen, die mit einem ähnlichen Problem konfrontiert sind, stellte ich fest, dass SET = NULL
PHPMyAdmin beim "Simulieren" einer Abfrage einen Fehler auslösen würde. Es ist ein roter Hering. Führen Sie einfach die Abfrage aus und alles wird gut.
In den obigen Antworten wurden viele Wege und Wiederholungen für dasselbe vorgeschlagen. Ich habe immer nach einer Antwort gesucht, wie bereits erwähnt, aber hier nicht gefunden.
Das Gegenteil der obigen Frage "Aktualisieren einer Spalte mit einem Nullwert" könnte jedoch "ALLE REIHEN IN DER SPALTE AUF NULL AKTUALISIEREN" sein.
In einer solchen Situation funktioniert folgendes
update table_name
set field_name = NULL
where field_name is not NULL;
is
und is not
arbeitet in mysql
verwenden is
statt=
Z.B: Select * from table_name where column is null
Ein weiterer möglicher Grund für die leere Zeichenfolge anstelle einer echten Null ist, dass das Feld ein Index oder Teil eines Index ist. Folgendes ist mir passiert: Mit phpMyAdmin habe ich die Struktur eines Feldes in einer meiner Tabellen bearbeitet, um NULL-Werte zuzulassen, indem ich das Kontrollkästchen " Null " aktiviert und dann auf die Schaltfläche " Speichern " geklickt habe. " Tischpreis wurde erfolgreich geändert " wurde angezeigt, daher nahm ich an, dass die Änderung stattgefunden hat - dies war nicht der Fall. Nachdem ich ein UPDATE durchgeführt hatte , um alle diese Felder auf NULL zu setzen , wurden sie stattdessen auf leere Zeichenfolgen gesetzt , also schaute ich mir die Tabellenstruktur noch einmal an und sah, dass die " Null ""Die Spalte für dieses Feld wurde auf ' Nein ' gesetzt. Da wurde mir klar, dass das Feld Teil des Primärschlüssels war !
Wenn Sie den Nullwert mithilfe der Aktualisierungsabfrage festlegen möchten, setzen Sie den Spaltenwert auf NULL (ohne Anführungszeichen). Aktualisieren Sie den Tabellennamen set columnname = NULL
Wenn Sie jedoch den Feldwert direkt in der MySQL-Workbench bearbeiten, verwenden Sie den Tastenanschlag (Esc + Entf), um einen Nullwert in die ausgewählte Spalte einzufügen
wenn du folgst
UPDATE table SET name = NULL
dann ist der Name "" nicht NULL IN MYSQL bedeutet Ihre Abfrage
SELECT * FROM table WHERE name = NULL
nicht arbeiten oder sich selbst enttäuschen
Ich vermute, das Problem hier ist, dass Anführungszeichen als Literale in Ihren Zeichenfolgenwert eingegeben wurden. Sie können diese Spalten mit folgenden Werten auf null setzen:
UPDATE table SET col=NULL WHERE length(col)<3;
Sie sollten natürlich zuerst überprüfen, ob diese Werte tatsächlich "" sind, mit:
SELECT DISTINCT(col) FROM table WHERE length(col)<3;
Wenn Sie für alle Datensätze NULL festlegen, versuchen Sie Folgendes :
UPDATE `table_name` SET `column_you_want_set_null`= NULL
ODER setzen Sie einfach NULL für spezielle Datensätze und verwenden Sie WHERE
UPDATE `table_name` SET `column_you_want_set_null`= NULL WHERE `column_name` = 'column_value'