Estou usando o mysql e preciso atualizar uma coluna com um valor nulo. Eu tentei de muitas maneiras diferentes e o melhor que consegui é uma string vazia.
Existe uma sintaxe especial para fazer isso?
Estou usando o mysql e preciso atualizar uma coluna com um valor nulo. Eu tentei de muitas maneiras diferentes e o melhor que consegui é uma string vazia.
Existe uma sintaxe especial para fazer isso?
Respostas:
Nenhuma sintaxe especial:
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
é um valor especial no SQL. Portanto, para anular uma propriedade, faça o seguinte:
UPDATE table SET column = NULL;
Use em IS
vez de =
Isso resolverá o exemplo de sintaxe do seu problema:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
Lembre-se de verificar se sua coluna pode ser nula. Você pode fazer isso usando
mysql> desc my_table;
Se sua coluna não puder ser nula, quando você definir o valor como nulo, será o valor de conversão para ele.
Aqui um exemplo
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)
Para aqueles que enfrentam um problema semelhante, descobri que, ao "simular" uma SET = NULL
consulta, o PHPMyAdmin gerava um erro. É um arenque vermelho .. basta executar a consulta e tudo ficará bem.
Nas respostas acima, muitas maneiras e repetições foram sugeridas para o mesmo. Continuei procurando uma resposta, como mencionado, é a pergunta, mas não consegui encontrar aqui.
Mas o oposto da pergunta acima "atualizar uma coluna com um valor nulo" pode ser "ATUALIZAR TODAS AS LINHAS DA COLUNA PARA NULAR"
Em tal situação, após trabalhos
update table_name
set field_name = NULL
where field_name is not NULL;
is
também is not
funciona no mysql
usar is
vez de=
Por exemplo: Select * from table_name where column is null
Outro motivo possível para a cadeia vazia, em vez de um nulo verdadeiro, é que o campo é um índice ou faz parte de um índice. Isso aconteceu comigo: usando o phpMyAdmin, editei a estrutura de um campo em uma das minhas tabelas para permitir NULLs marcando a caixa de seleção " Null " e pressionando o botão " Save ". " O preço da tabela foi alterado com sucesso " foi exibido, então eu assumi que a alteração ocorreu - não ocorreu. Depois de fazer um UPDATE para definir todos esses campos como NULL , eles foram configurados para cadeias vazias ; então, olhei novamente a estrutura da tabela e vi que o " Null ""a coluna desse campo foi definida como ' não '. Foi quando percebi que o campo fazia parte da chave primária !
Se você deseja definir um valor nulo usando o valor da coluna do conjunto de consultas de atualização como NULL (sem aspas), atualize o nome da tabela definido nome da coluna = NULL
No entanto, se você estiver editando diretamente o valor do campo no mysql workbench, use a tecla (Esc + del) para inserir valor nulo na coluna selecionada
se você seguir
UPDATE table SET name = NULL
então o nome "" não é NULL NO MYSQL significa sua consulta
SELECT * FROM table WHERE name = NULL
não trabalhar ou decepcionar-se
Eu suspeito que o problema aqui é que as aspas foram inseridas como literais no seu valor de string. Você pode definir essas colunas como nulas usando:
UPDATE table SET col=NULL WHERE length(col)<3;
Naturalmente, você deve primeiro verificar se esses valores estão realmente "" com algo como:
SELECT DISTINCT(col) FROM table WHERE length(col)<3;