Я использую mysql и мне нужно обновить столбец с нулевым значением. Я пробовал это разными способами, и лучшее, что я получил, это пустая строка.
Есть ли специальный синтаксис для этого?
Я использую mysql и мне нужно обновить столбец с нулевым значением. Я пробовал это разными способами, и лучшее, что я получил, это пустая строка.
Есть ли специальный синтаксис для этого?
Ответы:
Нет специального синтаксиса:
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. Итак, чтобы обнулить свойство, сделайте это:
UPDATE table SET column = NULL;
Используйте IS
вместо =
этого, чтобы решить синтаксис вашего примера проблемы:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
Не забудьте посмотреть, если ваш столбец может быть нулевым. Вы можете сделать это с помощью
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)
Для тех, кто сталкивался с подобной проблемой, я обнаружил, что при «симуляции» SET = NULL
запроса PHPMyAdmin выдаст ошибку. Это красная сельдь .. просто запусти запрос и все будет хорошо.
В приведенных выше ответах было предложено много способов и повторений для одного и того же. Я продолжал искать ответ, поскольку упомянутый вопрос - вопрос, но не мог найти здесь.
Но в противоположность вышеупомянутому вопросу «обновить столбец с нулевым значением» может быть «ОБНОВИТЬ ВСЕ СТРОКИ В КОЛОННЕ, ЧТОБЫ ПОЛУЧИТЬ»
В такой ситуации следующие работы
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 , установив флажок « Null », а затем нажав кнопку « Сохранить ». Появилось сообщение « Таблица цен была успешно изменена », поэтому я предположил, что изменение произошло - этого не произошло. После выполнения UPDATE для установки всех этих полей в NULL вместо них были заданы пустые строки , поэтому я снова взглянул на структуру таблицы и увидел, что « Null»столбец для этого поля был установлен на « нет ». Именно тогда я понял, что поле является частью первичного ключа !
Если вы хотите установить нулевое значение с помощью запроса на обновление, задайте для столбца значение NULL (без кавычек). Update tablename set columnname = NULL
Однако, если вы непосредственно редактируете значение поля в инструментальной среде mysql, используйте клавишу (Esc + del), чтобы вставить нулевое значение в выбранный столбец.
если вы будете следовать
UPDATE table SET name = NULL
то имя "" не NULL В 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;