Cara memperbarui kolom dengan nilai nol

148

Saya menggunakan mysql dan perlu memperbarui kolom dengan nilai nol. Saya telah mencoba berbagai cara dan yang terbaik yang saya dapatkan adalah string kosong.

Apakah ada sintaks khusus untuk melakukan ini?

Jim
sumber
4
Apakah kolom memungkinkan nilai NULL?
colek
8
SETELAH tabel SET kolom = NULL WHERE ...; tidak bekerja?
1
Tidak, tidak sama sekali. Ini benar-benar aneh
jim

Jawaban:

226

Tidak ada sintaks khusus:

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)
Daniel Vassallo
sumber
Terima kasih Daniel. Saya agak yakin bahwa masalah ini mungkin terletak pada kode aplikasi saya
jim
42

NULLadalah nilai khusus dalam SQL. Jadi untuk membatalkan properti, lakukan ini:

UPDATE table SET column = NULL;
Gumbo
sumber
Sekarang, izinkan saya mengklarifikasi. Melalui php saya menggunakan PDO dan memperbarui melalui permintaan.
jim
1
Manual MySQL menyatakan bahwa jika kolom tidak mengizinkan nilai NULL, mengaturnya ke NULL akan menghasilkan nilai default untuk tipe data (misalnya string kosong). Apakah Anda 100% kolom Anda memungkinkan NULL? Bisakah Anda menunjukkan kepada kami CREATE TABLE?
Saya yakin 1000%. Saya sudah memeriksanya dua kali. Biarkan saya melihat sekali lagi.
jim
Ya, itu sebenarnya nol. Saya dapat melihat NULL yang dihasilkan oleh perangkat lunak frnt end saya dalam data yang seharusnya nol.
jim
20

Gunakan ISsebagai gantinya = Ini akan menyelesaikan masalah Anda misalnya sintaks:

UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
korubilli krishna chaitanya
sumber
6

Ingatlah untuk melihat apakah kolom Anda bisa nol. Anda dapat melakukannya dengan menggunakan

mysql> desc my_table;

Jika kolom Anda tidak boleh nol, ketika Anda menetapkan nilai ke nol, itu akan menjadi nilai pemain untuk itu.

Berikut sebuah contoh

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)
Thiago Mata
sumber
4

Bagi mereka yang menghadapi masalah serupa, saya menemukan bahwa ketika 'mensimulasikan' SET = NULLkueri, PHPMyAdmin akan melempar kesalahan. Ini herring merah .. jalankan saja kueri dan semuanya akan baik-baik saja.

Daniel Dunn
sumber
Terima kasih, saya di sini mencari karena PHPMyAdmin mengklaim ada kata kunci yang tidak dikenal di dekat NULL. Setelah membaca jawaban Anda, saya menjalankan kueri dan dieksekusi sebagaimana dimaksud.
dading84
4

Dalam jawaban di atas, banyak cara dan pengulangan telah disarankan untuk hal yang sama. Saya terus mencari jawaban karena disebutkan adalah pertanyaan tetapi tidak dapat menemukan di sini.

Tetapi kebalikan dari pertanyaan di atas "perbarui kolom dengan nilai nol" Bisa jadi "MEMPERBARUI SEMUA BARIS DALAM KOLOM KE NULL"

Dalam situasi seperti ini karya berikut

update table_name
set field_name = NULL
where field_name is not NULL;

isjuga is notberfungsi di mysql

Nitish Kumar Pal
sumber
1

gunakan issebagai ganti=

Misalnya: Select * from table_name where column is null

Gangster Cyber
sumber
1

Alasan lain yang mungkin untuk string kosong, daripada nol benar adalah bahwa bidang tersebut adalah indeks atau merupakan bagian dari indeks. Ini terjadi pada saya: menggunakan phpMyAdmin, saya mengedit struktur bidang di salah satu tabel saya untuk memungkinkan NULLs dengan mencentang kotak centang " Null " lalu menekan tombol " Simpan ". " Tabel penetapan harga telah berhasil diubah " ditampilkan jadi saya berasumsi bahwa perubahan itu terjadi - ternyata tidak. Setelah melakukan PEMBARUAN untuk mengatur semua bidang tersebut menjadi NULL , kolom itu, sebaliknya, disetel ke string kosong , jadi saya melihat struktur tabel lagi dan melihat bahwa " Null"Kolom untuk bidang itu disetel ke ' tidak '. Saat itulah saya menyadari bahwa bidang itu adalah bagian dari kunci Utama !

ReverseEMF
sumber
1

Jika Anda ingin menetapkan nilai nol menggunakan kueri pembaruan set nilai kolom menjadi NULL (tanpa tanda kutip) perbarui set nama nama nama kolom = NULL

Namun, jika Anda secara langsung mengedit nilai bidang di dalam workbench mysql kemudian gunakan (Esc + del) keystroke untuk memasukkan nilai nol ke dalam kolom yang dipilih

mayank nigam
sumber
0

jika kamu mengikuti

UPDATE table SET name = NULL

maka nama "" bukan NULL IN MYSQL berarti permintaan Anda

SELECT * FROM table WHERE name = NULL tidak bekerja atau mengecewakan diri sendiri


sumber
0

Saya menduga masalahnya di sini adalah bahwa kutipan dimasukkan sebagai literal dalam nilai string Anda. Anda dapat mengatur kolom ini ke nol menggunakan:

UPDATE table SET col=NULL WHERE length(col)<3;

Anda tentu saja harus terlebih dahulu memeriksa bahwa nilai-nilai ini memang "" dengan sesuatu seperti:

SELECT DISTINCT(col) FROM table WHERE length(col)<3;
Dylan
sumber
0

jika Anda menetapkan NULL untuk semua catatan coba ini:

UPDATE `table_name` SET `column_you_want_set_null`= NULL

ATAU hanya mengatur NULL untuk menggunakan catatan khusus di MANA

UPDATE `table_name` SET `column_you_want_set_null`= NULL WHERE `column_name` = 'column_value' 
mamal
sumber