ฉันกำลังใช้ mysql และจำเป็นต้องอัปเดตคอลัมน์ด้วยค่า Null ฉันลองหลายวิธีแล้วสิ่งที่ดีที่สุดที่ฉันได้รับคือสตริงว่าง
มีไวยากรณ์พิเศษที่ต้องทำหรือไม่
ฉันกำลังใช้ mysql และจำเป็นต้องอัปเดตคอลัมน์ด้วยค่า Null ฉันลองหลายวิธีแล้วสิ่งที่ดีที่สุดที่ฉันได้รับคือสตริงว่าง
มีไวยากรณ์พิเศษที่ต้องทำหรือไม่
คำตอบ:
ไม่มีไวยากรณ์พิเศษ:
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
เป็นค่าพิเศษใน SQL ดังนั้น null คุณสมบัติให้ทำ:
UPDATE table SET column = NULL;
ใช้IS
แทน=
สิ่งนี้จะแก้ปัญหาไวยากรณ์ตัวอย่างของคุณ:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
อย่าลืมตรวจสอบว่าคอลัมน์ของคุณเป็นโมฆะหรือไม่ คุณสามารถทำได้โดยใช้
mysql> desc my_table;
หากคอลัมน์ของคุณไม่สามารถเป็นโมฆะเมื่อคุณตั้งค่าเป็นโมฆะมันจะเป็นค่าการโยน
นี่เป็นตัวอย่าง
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)
สำหรับผู้ที่เผชิญกับปัญหาที่คล้ายกันฉันพบว่าเมื่อ 'จำลอง' SET = NULL
แบบสอบถาม PHPMyAdmin จะโยนข้อผิดพลาด มันเป็นปลาเฮอริ่งแดง .. เพียงแค่เรียกใช้แบบสอบถามและทุกอย่างจะดีขึ้น
ในคำตอบข้างต้นมีการแนะนำวิธีการและการทำซ้ำหลายวิธีสำหรับสิ่งเดียวกัน ฉันค้นหาคำตอบตามที่กล่าวไว้เป็นคำถาม แต่ไม่พบที่นี่
แต่ตรงข้ามกับคำถามข้างต้น "อัปเดตคอลัมน์ที่มีค่า Null" อาจเป็น "อัปเดตแถวทั้งหมดในคอลัมน์เป็น NULL"
ในสถานการณ์ดังต่อไปนี้การทำงาน
update table_name
set field_name = NULL
where field_name is not NULL;
is
is not
ทำงานได้ดีใน mysql
ใช้ is
แทน=
เช่น: Select * from table_name where column is null
อีกเหตุผลที่เป็นไปได้สำหรับสตริงว่างแทนที่จะเป็นค่าว่างที่แท้จริงคือฟิลด์นี้เป็นดัชนีหรือเป็นส่วนหนึ่งของดัชนี สิ่งนี้เกิดขึ้นกับฉัน: โดยใช้ phpMyAdmin ฉันแก้ไขโครงสร้างของเขตข้อมูลในหนึ่งในตารางของฉันเพื่ออนุญาตให้NULLโดยการทำเครื่องหมายที่ช่อง " ว่าง " จากนั้นกดปุ่ม " บันทึก " "การกำหนดราคาตารางได้รับการแก้ไขเรียบร้อยแล้ว " ปรากฏขึ้นดังนั้นฉันจึงสันนิษฐานว่าการเปลี่ยนแปลงเกิดขึ้น - ไม่ได้ หลังจากทำUPDATEเพื่อตั้งค่าเขตข้อมูลเหล่านั้นทั้งหมดให้เป็นNULLพวกเขาจะถูกตั้งค่าเป็นสตริงว่างดังนั้นฉันจึงดูโครงสร้างของตารางอีกครั้งและเห็นว่า " Null " "" สำหรับเขตข้อมูลนั้นถูกตั้งค่าเป็น ' ไม่ 'คีย์หลัก !
หากคุณต้องการตั้งค่า Null โดยใช้แบบสอบถามชุดปรับปรุงค่าคอลัมน์เป็น NULL (ไม่มีคำพูด) การปรับปรุงชุด tablename ชุดคอลัมน์ namename = NULL
อย่างไรก็ตามหากคุณแก้ไขค่าฟิลด์โดยตรงภายใน mysql workbench ให้ใช้ (Esc + del) การกดแป้นพิมพ์เพื่อแทรกค่า Null ในคอลัมน์ที่เลือก
ถ้าคุณทำตาม
UPDATE table SET name = NULL
ชื่อนั้นคือ "" ไม่ใช่ค่า NULL IN MYSQL หมายถึงคิวรีของคุณ
SELECT * FROM table WHERE name = NULL
ไม่ทำงานหรือผิดหวังกับตัวเอง
ฉันสงสัยว่าที่นี่คือคำพูดที่ถูกป้อนเป็นตัวอักษรในค่าสตริงของคุณ คุณสามารถตั้งค่าคอลัมน์เหล่านี้เป็นโมฆะโดยใช้:
UPDATE table SET col=NULL WHERE length(col)<3;
แน่นอนคุณควรตรวจสอบก่อนว่าค่าเหล่านี้มีค่าดังนี้: ""
SELECT DISTINCT(col) FROM table WHERE length(col)<3;
ถ้าคุณตั้งค่า NULL สำหรับบันทึกทั้งหมดลอง:
UPDATE `table_name` SET `column_you_want_set_null`= NULL
หรือเพียงแค่ตั้งค่า NULL สำหรับบันทึกพิเศษใช้ WHERE
UPDATE `table_name` SET `column_you_want_set_null`= NULL WHERE `column_name` = 'column_value'