É possível fazer uma instrução select que use apenas valores NOT NULL?
Agora eu estou usando isso:
SELECT * FROM table
E então eu tenho que filtrar os valores nulos com um loop php.
Existe uma maneira de fazer:
SELECT * (that are NOT NULL) FROM table
?
Agora, quando eu seleciono * eu recebo val1, val2, val3, nulo, val4, val5, nulo, nulo etc .... mas eu só quero obter os valores que não são nulos no meu resultado. Isso é possível sem filtrar com um loop?
Respostas:
Você deveria usar
IS NOT NULL
. (Os operadores de comparação=
e os<>
dois fornecemUNKNOWN
comNULL
ambos os lados da expressão.)Apenas para completar, mencionarei que no MySQL você também pode negar o operador de igualdade segura nula, mas esse não é o SQL padrão.
Editado para refletir os comentários. Parece que sua tabela pode não estar na primeira forma normal; nesse caso, alterar a estrutura pode facilitar sua tarefa. Algumas outras maneiras de fazer isso ...
A desvantagem do acima é que ela varre a tabela várias vezes uma vez para cada coluna. Isso pode ser evitado pelo abaixo, mas eu não testei isso no MySQL.
fonte
CASE
instrução, não aCASE
função. Então não deveria serEND CASE
, em vez deEND
naSELECT CASE ...
parte?idx
rom o primeiroSELECT
vem doidx
no segundoSELECT
? O que aCASE
declaração tenta realizar? O que o segundoSELECT
realmente faz? E você está fazendo uma junção interna, não uma junção cruzada, certo?SELECT * FROM table WHERE * IS NOT NULL AND primary_key="somevalue"
)Você pode filtrar as linhas que contêm um valor NULL em uma coluna específica:
Se você deseja filtrar as linhas que contêm um nulo em qualquer coluna, tente o seguinte:
Atualização: Com base nos seus comentários, talvez você queira isso?
E eu concordo com Martin que se você precisar fazer isso, provavelmente deverá alterar o design do banco de dados.
fonte
*
retornam? Talvez forneça alguns exemplos de dados na sua pergunta, pois não está claro no seu comentário acima se esta é apenas uma coluna.A única desvantagem dessa abordagem é que você pode comparar apenas cinco colunas; depois disso, o resultado sempre será falso; portanto, comparo apenas os campos que podem ser
NULL
.fonte
Encontrei esta solução:
Esta consulta seleciona o último valor não nulo para cada coluna.
Exemplo
Se você tem uma mesa:
você obtém:
Inquerir
Espero te ajudar.
fonte
Eu uso o
\!
comando no MySQL para receber valores NULL do shell:Funciona melhor com um local apropriado
.my.cnf
onde seu banco de dados / nome de usuário / senha são especificados. Dessa forma, você só precisa cercar o seuselect
com\! mysql e
e| grep -v NULL
.fonte
Após a consulta trabalhar para mim
quando eu tiver definido o valor padrão da coluna 'NULL', então
e quando eu definir o valor padrão nada, então
fonte
Sim, use
NOT NULL
em sua consulta como esta abaixo.fonte
O MYSQL NÃO É NULL COM JUNTAS E SELECIONA, INSERIR, EXCLUIR E OPERADOR LÓGICO COMO OU, NÃO
fonte
fonte