No SQLite, se você precisar substituir os resultados NULL por textos como “N/A”, “None” ou mesmo o texto “NULL”, você pode usar uma das três soluções abaixo.
Dados de amostra
Primeiro, aqui está um exemplo de uma consulta que retorna alguns valores NULL.
SELECT
CustomerId,
Fax
FROM Customer
LIMIT 5;
Resultado:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 3 4 5 +420 2 4172 5
Observe que as linhas 2, 3 e 4 contêm valores NULL no Fax coluna.
Podemos usar os métodos abaixo para alterar o resultado para que as colunas NULL exibam “N/A”.
A função ifnull()
O
ifnull()
A função aceita dois argumentos e retorna o primeiro que não é NULL. Se ambos os argumentos forem NULL, ele retornará NULL. Portanto, o primeiro argumento deve ser o valor que pode ou não ser anulável e o segundo argumento deve ser o valor pelo qual você deseja substituir quaisquer valores NULL.
Veja como podemos modificar a consulta anterior para exibir "N/A" sempre que o Fax coluna é NULL.
SELECT
CustomerId,
ifnull(Fax, 'N/A') AS Fax
FROM Customer
LIMIT 5;
Resultado:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 N/A 3 N/A 4 N/A 5 +420 2 4172 5
A função coalesce()
A
coalesce()
função é muito semelhante ao ifnull()
função. A diferença é que coalesce()
aceita mais de dois argumentos. Ele simplesmente retorna o primeiro argumento não NULL. Portanto, podemos usá-lo exatamente da mesma maneira que usamos
ifnull()
apresentando dois argumentos. SELECT
CustomerId,
coalesce(Fax, 'N/A') AS Fax
FROM Customer
LIMIT 5;
Resultado:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 N/A 3 N/A 4 N/A 5 +420 2 4172 5
O comando de ponto .nullvalue
Ao usar a interface de linha de comando SQLite, você pode usar o
.nullvalue
dot para evitar ter que usar uma das funções anteriores cada vez que você faz uma consulta. Ao usar este comando, você fornece uma string que será usada para substituir valores NULL.
Exemplo:
.nullvalue N/A
Agora, sempre que você executar uma consulta que retorne valores NULL, a string “N/A” substituirá esses valores NULL.
SELECT
CustomerId,
Fax
FROM Customer
LIMIT 5;
Resultado:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 N/A 3 N/A 4 N/A 5 +420 2 4172 5