So aktualisieren Sie die Spalte mit dem Wert Null


148

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?


4
Erlaubt die Spalte einen NULL-Wert?
stupsen

8
UPDATE-Tabelle SET column = NULL WHERE ...; funktioniert nicht?

1
Nein überhaupt nicht. Es ist wirklich seltsam
jim

Antworten:


226

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)

Danke Daniel. Ich bin irgendwie davon überzeugt, dass dieses Problem in meinem Anwendungscode liegen könnte
Jim

42

NULList ein spezieller Wert in SQL. Gehen Sie folgendermaßen vor, um eine Eigenschaft auf Null zu setzen:

UPDATE table SET column = NULL;

Lassen Sie mich jetzt klarstellen. Über PHP verwende ich PDO und aktualisiere über eine Abfrage.
Jim

1
Das MySQL-Handbuch besagt, dass, wenn die Spalte keine NULL-Werte zulässt, das Setzen auf NULL den Standardwert für den Datentyp ergibt (z. B. eine leere Zeichenfolge). Sind Sie zu 100% der Meinung, dass Ihre Spalte NULL zulässt? Können Sie uns die CREATE TABLE zeigen?

Ich bin mir zu 1000% sicher. Ich habe es zweimal überprüft. Lass mich noch einmal schauen.
Jim

Ja, es ist tatsächlich null. Ich kann den von meiner frnt-End-Software erzeugten NULL in den Daten sehen, die null sein sollten.
Jim

20

Verwenden Sie ISanstelle von = Dies löst Ihre Problembeispielsyntax:

UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;

6

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)

4

Für diejenigen, die mit einem ähnlichen Problem konfrontiert sind, stellte ich fest, dass SET = NULLPHPMyAdmin 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.


Vielen Dank, ich habe hier gesucht, weil PHPMyAdmin behauptete, es gäbe ein nicht erkanntes Schlüsselwort in der Nähe von NULL. Nachdem ich Ihre Antwort gelesen hatte, führte ich die Abfrage aus und sie wurde wie beabsichtigt ausgeführt.
dading84

4

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;

isund is notarbeitet in mysql



1

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 !


1

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


0

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


0

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;

0

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' 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.