Tôi đang sử dụng mysql và cần cập nhật một cột có giá trị null. Tôi đã thử điều này theo nhiều cách khác nhau và điều tốt nhất tôi có được là một chuỗi rỗng.
Có một cú pháp đặc biệt để làm điều này?
Tôi đang sử dụng mysql và cần cập nhật một cột có giá trị null. Tôi đã thử điều này theo nhiều cách khác nhau và điều tốt nhất tôi có được là một chuỗi rỗng.
Có một cú pháp đặc biệt để làm điều này?
Câu trả lời:
Không có cú pháp đặc biệt:
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
là một giá trị đặc biệt trong SQL. Vì vậy, để null một tài sản, làm điều này:
UPDATE table SET column = NULL;
Sử dụng IS
thay vì =
Điều này sẽ giải quyết cú pháp ví dụ vấn đề của bạn:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
Hãy nhớ xem nếu cột của bạn có thể là null. Bạn có thể làm điều đó bằng cách sử dụng
mysql> desc my_table;
Nếu cột của bạn không thể rỗng, khi bạn đặt giá trị thành null, nó sẽ là giá trị truyền cho nó.
Dưới đây là một ví dụ
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)
Đối với những người gặp phải vấn đề tương tự, tôi thấy rằng khi 'mô phỏng' một SET = NULL
truy vấn, PHPMyAdmin sẽ gặp lỗi. Đó là một cá trích đỏ .. chỉ cần chạy truy vấn và tất cả sẽ ổn.
Trong các câu trả lời trên, nhiều cách và sự lặp lại đã được đề xuất cho cùng một. Tôi tiếp tục tìm kiếm một câu trả lời như đã đề cập là câu hỏi nhưng không thể tìm thấy ở đây.
Nhưng ngược lại với câu hỏi trên "cập nhật một cột có giá trị null" có thể là "CẬP NHẬT TẤT CẢ CÁC ROWS TRONG MÀU SẮC ĐẾN NULL"
Trong tình huống như vậy sau các công trình
update table_name
set field_name = NULL
where field_name is not NULL;
is
cũng is not
hoạt động trong mysql
sử dụng is
thay vì=
Ví dụ: Select * from table_name where column is null
Một lý do có thể khác cho chuỗi rỗng, thay vì null thực sự là trường là một chỉ mục hoặc là một phần của chỉ mục. Điều này đã xảy ra với tôi: bằng cách sử dụng phpMyAdmin, tôi đã chỉnh sửa cấu trúc của một trường trong một trong các bảng của mình để cho phép NULL bằng cách chọn hộp kiểm " Null " sau đó nhấn nút " Lưu ". "Giá bảng đã được thay đổi thành công " được hiển thị vì vậy tôi cho rằng sự thay đổi đã xảy ra - không. Sau khi thực hiện CẬP NHẬT để đặt tất cả các trường đó thành NULL , thay vào đó, chúng được đặt thành cột trống , vì vậy tôi đã xem lại cấu trúc bảng và thấy rằng " Null "cho trường đó được đặt thành ' không '. Điều đó 'Khóa chính !
Nếu bạn muốn đặt giá trị null bằng cách sử dụng giá trị cột đặt truy vấn cập nhật thành NULL (không có dấu ngoặc kép) thì tablename được đặt tên cột = NULL
Tuy nhiên, nếu bạn đang trực tiếp chỉnh sửa giá trị trường bên trong bàn làm việc của mysql thì hãy sử dụng tổ hợp phím (Esc + del) để chèn giá trị null vào cột đã chọn
nếu bạn theo dõi
UPDATE table SET name = NULL
sau đó tên là "" không phải NULL IN MYSQL có nghĩa là truy vấn của bạn
SELECT * FROM table WHERE name = NULL
không làm việc hay làm mình thất vọng
Tôi nghi ngờ vấn đề ở đây là các trích dẫn đã được nhập dưới dạng chữ trong giá trị chuỗi của bạn. Bạn có thể đặt các cột này thành null bằng cách sử dụng:
UPDATE table SET col=NULL WHERE length(col)<3;
Tất nhiên trước tiên bạn nên kiểm tra xem các giá trị này có thực sự là "" với nội dung như:
SELECT DISTINCT(col) FROM table WHERE length(col)<3;