Я использую 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. Итак, чтобы присвоить свойство null, сделайте следующее:
UPDATE table SET column = NULL;
Используйте IS
вместо =
Это решит вашу проблему
пример синтаксиса:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
Не забудьте посмотреть, может ли ваш столбец быть нулевым. Вы можете сделать это с помощью
mysql> desc my_table;
Если ваш столбец не может быть нулевым, когда вы установите значение 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 выдавал бы ошибку. Это красная селедка.. просто запустите запрос, и все будет хорошо.
Другая возможная причина для пустой строки, а не истинного нуля, заключается в том, что поле является индексом или является частью индекса. Это случилось со мной: используя phpMyAdmin, я редактировал структуру поля в одной из моих таблиц, чтобы разрешить NULL, установив флажок " Null", а затем нажав " Сохранить", кнопка. "Табличное ценообразование было изменено успешно", и я предположил, что это произошло - это не так. После выполнения UPDATE, чтобы установить все эти поля в NULL, они вместо этого установили пустые строки, поэтому я снова посмотрел на структуру таблицы и увидел, что столбца Null "для этого поля было установлено значение нет. Это, когда я понял, что поле было частью Первичного ключа!
Если вы хотите установить нулевое значение, используя значение столбца запроса обновления, установите значение NULL (без кавычек) update tablename set columnname = NULL
Однако, если вы непосредственно редактируете значение поля внутри workbench mysql, используйте клавишу (Esc + del), чтобы вставить нулевое значение в выбранный столбец
если вы следуете
UPDATE table SET name = NULL
тогда имя равно "", а не NULL IN MYSQL означает ваш запрос
SELECT * FROM table WHERE name = NULL
не работает или не разочаровывается
Я подозреваю, что проблема заключается в том, что кавычки были введены как литералы в вашем строковом значении. Вы можете установить для этих столбцов значение null:
UPDATE table SET col=NULL WHERE length(col)<3;
Вы должны, конечно, сначала проверить, что эти значения действительно "" с чем-то вроде:
SELECT DISTINCT(col) FROM table WHERE length(col)<3;
используйте is
вместо =
Например: Select * from table_name where column is null
В приведенных выше ответах было предложено много способов и повторений для одного и того же. Я продолжал искать ответ, поскольку упомянутый вопрос - вопрос, но не мог найти здесь.
Но в противоположность приведенному выше вопросу "обновить столбец с нулевым значением" может быть "ОБНОВИТЬ ВСЕ СТРОКИ В КОЛОННЕ, ЧТОБЫ ПОЛУЧИТЬ"
В такой ситуации следующие работы
update table_name
set field_name = NULL
where field_name is not NULL;
is
так же is not
работает в MySQL
Сначала столбец в TABLE_NAME
должен принять NULL
и вы, вероятно, уже осознаете, что для value NULL
вам нужно использовать
Eg: UPDATE TABLE_NAME SET column_name = NULL
Eg: instead of using column_name = 'NULL'.
So, in a situation where one use a "selected value" to update a table
in database, such as the following very simple example,
Part one,
Condition of the variable:
Checkbox(name = "checkbox")
Eg: if not click, $_POST["checkbox"] = "",
Eg: if clicked, $_POST["checkbox"] = "1".
Now, we must try to make this $_POST["checkbox"] to convert the value ""
to NULL and update to the database table.
An alternative way that I found is to use echo and assign echo value to
a $variable
of course, you already know how to use if {} else {}.
To save echo value to a $variable, I did the following:
Eg: ob_start()
Eg: echo <==hint 1: selected value here.
Eg: $variable1 = ob_get_contents()
Eg: ob_end_clean()
Then, you need to do this again,
Eg: ob_start()
Eg: echo <==hint 2: command line + selected value here.
Eg: $variable2 = ob_get_contents()
Eg: ob_end_clean()
MYSQL will be something like the following:
Eg: UPDATE table_name SET
Eg: name = '$name',
Eg: $variable2,
Eg: date = '$date'
Eg: WHERE id = '$id';
see the trick is to how to make
Eg: $variable2 to show either
Eg: checkbox = NULL
or to show
Eg: checkbox = '1'
Hope this can give you a guide to solve this problem.
I think you have enough knowledge to fill in the blanks. Good luck.
Additional note: you can do the same for (MYSQL) INSERT INTO