Как обновить столбец с нулевым значением - PullRequest
129 голосов
/ 06 октября 2010

Я использую mysql и мне нужно обновить столбец с нулевым значением. Я пробовал это разными способами, и лучшее, что я получил, это пустая строка.

Есть ли специальный синтаксис для этого?

Ответы [ 11 ]

198 голосов
/ 06 октября 2010

Нет специального синтаксиса:

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)
36 голосов
/ 06 октября 2010

NULL - это специальное значение в SQL. Итак, чтобы обнулить свойство, сделайте следующее:

UPDATE table SET column = NULL;
10 голосов
/ 25 ноября 2016

Используйте IS вместо = Это решит синтаксис вашего примера проблемы:

UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
6 голосов
/ 09 апреля 2014

Не забудьте посмотреть, может ли ваш столбец быть нулевым.Вы можете сделать это, используя

mysql> desc my_table;

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

Вот пример

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 голосов
/ 19 февраля 2016

Для тех, кто сталкивался с подобной проблемой, я обнаружил, что при «имитации» запроса SET = NULL PHPMyAdmin выдаст ошибку. Это красная сельдь .. просто запусти запрос и все будет хорошо.

1 голос
/ 24 июля 2018

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

Но в отличие от вышеупомянутого вопроса "обновить столбец с нулевым значением" Может быть "ОБНОВИТЬ ВСЕ СТРОКИ В КОЛОННЕ ДОNULL "

В такой ситуации следующие работы

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

is, а также is not работает в mysql

1 голос
/ 16 мая 2016

Если вы хотите установить нулевое значение, используя запрос на обновление, установите для столбца значение NULL (без кавычек) обновить имя таблицы установить имя столбца = NULL

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

1 голос
/ 06 декабря 2013

Другая возможная причина для пустой строки, а не true null, заключается в том, что поле является индексом или является частью индекса.Это случилось со мной: используя phpMyAdmin, я отредактировал структуру поля в одной из моих таблиц, чтобы разрешить NULLs , установив флажок " Null " и нажав " Сохранить "кнопка.« Таблица цен была успешно изменена », поэтому я предположил, что изменение произошло - это не так.После выполнения UPDATE для установки всех этих полей на NULL вместо них было установлено пустых строк , поэтому я взглянул на структуру таблицыснова и увидел, что столбец « Null » для этого поля был установлен на « no ».Именно тогда я понял, что это поле является частью Первичного ключа !

1 голос
/ 24 октября 2013

используйте is вместо =

Например: Select * from table_name where column is null

0 голосов
/ 16 января 2013

Я подозреваю, что проблема здесь в том, что кавычки были введены как литералы в вашем строковом значении.Вы можете установить для этих столбцов значение NULL, используя:

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

Вы, конечно, должны сначала проверить, что эти значения действительно "" с чем-то вроде:

SELECT DISTINCT(col) FROM table WHERE length(col)<3;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...