9
votes

Comment attraper des valeurs nulles à l'aide de la déclaration de cas

ici dans cette requête, je veux remplacer les valeurs en personne.Contact de la base de données AventureWorks avec de nouvelles valeurs. La déclaration de cas de requête ci-dessous fonctionne bien pour d'autres valeurs, mais je ne suis pas en mesure de modifier les valeurs qui sont à NULL. J'utilise SQL Server. Toute aide est appréciée.

select contactid,Title,FirstName,MiddleName,
case MiddleName
when 'R.' then 'Robert'
when 'B.' then 'Bids'
when 'J.' then 'John'
when is null then 'New Name'
else 'No Name'
end, LastName from Person.Contact


0 commentaires

3 Réponses :


16
votes
case 
when MiddleName is null then ...
when MiddleName = 'R' then ...
end

0 commentaires

13
votes

J'utiliserais la fonction Isnull - il retournera la valeur donnée si le champ est NULL:

select contactid,Title,FirstName,MiddleName,
case ISNULL(MiddleName, 'NULLVALUE')
when 'R.' then 'Robert'
when 'B.' then 'Bids'
when 'J.' then 'John'
when 'NULLVALUE' then 'New Name'
else 'No Name'
end, LastName from Person.Contact


3 commentaires

Je suis d'accord. Espérons simplement que personne n'a «nullvalue» comme prénom.


Est-ce que cela ressemble de petites tables de chute de bobby?


@Johndunagan bien, notre est moins dangereux



3
votes

Désolé de poster 7 ans plus tard, mais j'essaie de trouver une solution pour Interbase / Firebird et ce post continua à sauter. Aucune des solutions ici ne fonctionne ici car il n'y a pas d'isnull, j'ai donc pensé que j'aiderais quelqu'un d'autre qui pourrait venir ici à la recherche de ce: xxx


3 commentaires

Firebird n'a pas est null aussi (par opposition à isnull )?


Merci beaucoup .. eu le même problème avec l'utilisation d'Interbase qui n'a pas d'isnull mais votre code a fonctionné!


@Gserg Firebird pourrait, mais je travaillais dans Interbase ... Firebird semble avoir plus de fonctionnalités, mais tout ce qui fonctionne dans Interbase devrait travailler dans Firebird, mais pas l'inverse. De plus, j'ai vu toutes sortes de liens pour configurer votre propre UDF pour Isnull, mais cela semblait un peu au-delà de ce que j'avais besoin de faire.