Як оновити стовпчик з нульовим значенням


148

Я використовую mysql і мені потрібно оновити стовпчик з нульовим значенням. Я спробував це багато різних способів, і найкраще, що я отримав - це порожня рядок.

Чи є для цього спеціальний синтаксис?


4
Чи дозволяє стовпець значення NULL?
ткнути

8
ОБНОВЛЕННЯ стовпця SET SET = NULL WHERE ...; не працює?

1
Ні, зовсім ні. Це дійсно wierd
jim

Відповіді:


226

Немає спеціального синтаксису:

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)

Дякую Даніелю. Я певно переконаний, що це питання може лежати в моєму коді заявки
jim

42

NULLє особливим значенням у SQL. Отже, щоб зняти властивість, зробіть це:

UPDATE table SET column = NULL;

Тепер дозвольте уточнити. Через php я використовую PDO та оновлюю запит.
Джим

1
У посібнику MySQL зазначено, що якщо стовпець не дозволяє значенням NULL, встановлення його на NULL призведе до значення за замовчуванням для типу даних (наприклад, порожній рядок). Ви на 100%, що ваш стовпець дозволяє NULL? Чи можете ви показати нам ТВОРЧУ СТОЛЮ?

Я впевнений на 1000%. Я перевірив це двічі. Дозвольте ще раз подивитися.
Джим

Так, насправді це недійсно. Я бачу NULL, отриманий моїм програмним забезпеченням frnt end, у даних, які мають бути нульовими.
Джим

20

Використання ISзамість = цього вирішить ваш синтаксис прикладу проблеми:

UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;

6

Не забудьте подивитися, чи може ваш стовпець бути нульовим. Це можна зробити, використовуючи

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)

4

Для тих, хто стикається з подібною проблемою, я виявив, що під час "моделювання" SET = NULLзапиту PHPMyAdmin видасть помилку. Це червона оселедець .. просто запустіть запит і все буде добре.


Дякую, я тут шукав, тому що PHPMyAdmin стверджував, що поблизу NULL є нерозпізнане ключове слово. Прочитавши вашу відповідь, я запустив запит, і він виконаний за призначенням.
dading84

4

У вищенаведених відповідях запропоновано багато способів і повторів для того ж. Я продовжував шукати відповідь, як згадувалося, це питання, але не зміг знайти тут.

Але навпроти вищезазначеного питання "оновити стовпчик з нульовим значенням" Може бути "ОНОВЛЕННЯ ВСІХ РУХІВ В КОЛІНІ НА НУЛЬ"

У такій ситуації наступні роботи

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

isтакож is notпрацює в mysql



1

Інша можлива причина порожнього рядка, а не справжня нуль, полягає в тому, що поле є індексом або є частиною індексу. Це сталося зі мною: використовуючи phpMyAdmin, я відредагував структуру поля в одній із моїх таблиць, щоб дозволити NULL, встановивши прапорець " Null ", потім натиснувши кнопку " Save ". " Цінова таблиця була змінена успішно ", тому я припустив, що зміни відбулися - не вдалося. Зробивши UPDATE для встановлення всіх цих полів на NULL , вони були замість цього порожніми рядками , тому я знову переглянув структуру таблиці і побачив, що " Null"для цього поля було встановлено значення" ні ". Тоді я зрозумів, що поле є частиною Первинного ключа !


1

Якщо ви хочете встановити нульове значення за допомогою запиту оновлення встановити значення стовпця на NULL (без лапок) оновити ім'я таблиці встановити ім'я стовпця = NULL

Однак якщо ви безпосередньо редагуєте значення поля всередині mysql workbench, використовуйте клавішу (Esc + del) для вставки нульового значення у вибраний стовпець


0

якщо слідувати

UPDATE table SET name = NULL

тоді назва "" не NULL IN MYSQL означає ваш запит

SELECT * FROM table WHERE name = NULL не працювати і не розчаровувати себе


0

Я підозрюю, що проблема тут полягає в тому, що котирування були введені як літерали у вашому значення рядка. Ви можете встановити ці стовпці на нуль, використовуючи:

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

Ви, звичайно, спочатку перевірте, чи справді ці значення є "" чимось на зразок:

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

0

якщо для всіх записів встановлено 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' 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.