J'ai cette requête:
SELECT `id` , `naam`
FROM `klanten`
WHERE (
`email` LIKE '%@domain.nl%'
OR `email2` LIKE '%@domain.nl%'
)
Mais je veux faire quelque chose comme ça:
SELECT `id` , `naam`
FROM `klanten`
WHERE IF(`email` > 0,
`email` LIKE '%@domain.nl%'
, `email2` LIKE '%@domain.nl%'
)
Comment vérifier si un e-mail existe? Je souhaite utiliser le courrier électronique et si ce champ est vide, je souhaite utiliser le courrier électronique2. Comment est-ce que j'accomplis ceci?
IF
est utilisé pour sélectionner le champ, puis la clause LIKE
est placée après:
SELECT `id` , `naam`
FROM `klanten`
WHERE IF(`email` != '', `email`, `email2`) LIKE '%@domain.nl%'
Vous souhaitez utiliser coalesce()
:
where coalesce(email, email2) like '%[email protected]%'
Si vous voulez gérer vide chaînes ('') contre NULL, un cas fonctionne:
where (case when email is NULL or email = '' then email2 else email end) like '%[email protected]%'
Et, si vous craignez que la chaîne ne soit vraiment que des espaces:
where (case when email is NULL or ltrim(email) = '' then email2 else email end) like '%[email protected]%'
Soit dit en passant, l'exemple de déclaration if
dit vraiment "si le courrier électronique commence par un nombre supérieur à 0". C'est parce que la comparaison est à 0, un nombre. MySQL essaie implicitement de convertir la chaîne en un nombre. Ainsi, "[email protected]" échouerait, car la chaîne serait convertie en 0. De même que "[email protected]". Mais, "[email protected]" et "[email protected]" réussiraient.
Notez que ce qui suit est fonctionnellement différent de la réponse de Gordon Linoff. Sa réponse suppose que vous souhaitez utiliser email2
si email
est NULL. Le mien suppose que vous souhaitez utiliser email2
si email
est une chaîne vide. La bonne réponse dépendra de votre base de données (ou vous pourriez effectuer une vérification NULL et une vérification de chaîne vide - tout dépend de ce qui est approprié pour la conception de votre base de données).
SELECT `id` , `naam`
FROM `klanten`
WHERE `email` LIKE '%[email protected]%'
OR (LENGTH(email) = 0 AND `email2` LIKE '%[email protected]%')
essayez ceci, j'espère que cela aide
select user_display_image as user_image,
user_display_name as user_name,
invitee_phone,
(
CASE
WHEN invitee_status=1 THEN "attending"
WHEN invitee_status=2 THEN "unsure"
WHEN invitee_status=3 THEN "declined"
WHEN invitee_status=0 THEN "notreviwed" END
) AS invitee_status
FROM your_tbl