Chcę zaimplementować trójskładnikowy operator warunkowy w MySQL. Mam tabelę, w której istnieje jeden identyfikator pola. Jego wartość może być zerowa. Chcę wyświetlić id
w trójskładnikowym formacie warunkowym, takim jak ten:
select id = id == null ? 0 : id;
Czy jest to możliwe w MySQL?
mysql
conditional-operator
user1086355
źródło
źródło
Odpowiedzi:
Spróbuj tego :
select if(Id is null, 0, id) as Id;
źródło
null
czy''
, a może nawet0
. mySQL jest czasamiDokumentacja jest twoim przyjacielem; powinieneś to przeczytać!
To mówi:
A potem mnóstwo przykładów. Jest to równoważne użyciu warunku trójskładnikowego z porównaniem
NULL
i podmiotem porównania jako drugim operandem; że nie zdarza się, że używa się symboli?
i:
aby cię tam dostać, nie ma znaczenia.A więc w twoim przypadku:
SELECT IFNULL(`id`, 0) FROM `table`
Jeśli jesteś zdesperowany, aby jawnie podać trzy operandy (dlaczego ?!), przełącz na
IF
:SELECT IF(`id` IS NULL, 0, `id`) FROM `table`
źródło
CASE WHEN id IS NULL THEN 0 ELSE id END
IFNULL
jest bardziej zwięzły.IF
zamiastIFNULL
lub,COALESCE
ponieważ migruję dane do innej bazy danych dostawcy i nie chcę importować wartości innych niż null, tylko interpretuję je jako stan ogólny.SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_status
pracuje dla mnie.Istnieją dwa sposoby zaimplementowania tej samej logiki co operator trójskładnikowy:
IF
funkcji, np.IF(expression, true result, false result)
Użyj
CASE
wyrażenia, np.CASE WHEN expression THEN <true result> ELSE <false_result> END
Podczas sprawdzania wartości NULL możesz użyć funkcji
IFNULL
lubCOALESCE
, np.źródło