Eu quero implementar o operador condicional ternário no MySQL. Eu tenho uma tabela na qual existe um ID de campo. Seu valor pode ser nulo. Desejo exibir id
em formato condicional ternário como este:
select id = id == null ? 0 : id;
É possível no MySQL?
mysql
conditional-operator
user1086355
fonte
fonte
Respostas:
Experimente isto:
select if(Id is null, 0, id) as Id;
fonte
null
ou''
e talvez até0
. mySQL é um pouco de duche às vezesA documentação é sua amiga; você deveria ler!
Diz:
E então muitos exemplos. Isso é equivalente a usar uma condicional ternária com uma comparação
NULL
e o sujeito de comparação como o segundo operando; que não acontece de usar os símbolos?
e:
chegar lá não é realmente relevante para nada.Então, no seu caso:
SELECT IFNULL(`id`, 0) FROM `table`
Se você está desesperado para fornecer três operandos explicitamente (por quê ?!), mude para
IF
:SELECT IF(`id` IS NULL, 0, `id`) FROM `table`
fonte
CASE WHEN id IS NULL THEN 0 ELSE id END
IFNULL
é mais terser.IF
vez deIFNULL
ouCOALESCE
porque estou migrando dados para um banco de dados de um fornecedor diferente e não quero importar os valores não nulos, apenas interpretá-los como um status genérico.SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_status
funciona para mim.Existem duas maneiras de implementar a mesma lógica de um operador ternário:
IF
função, por exemplo.IF(expression, true result, false result)
Use a
CASE
expressão, por exemplo.CASE WHEN expression THEN <true result> ELSE <false_result> END
Quando você está verificando NULL, pode usar as funções
IFNULL
ouCOALESCE
, por exemplo.fonte