J'aimerais savoir comment utiliser NULL et une chaîne vide en même temps dans un fichier WHERE
dans SQL Server. J'ai besoin de trouver des enregistrements qui ont soit des valeurs nulles, soit une chaîne vide. Merci.
Réponses
Trop de publicités?
Martin Smith
Points
174101
Quelques sargable méthodes...
SELECT *
FROM #T
WHERE SomeCol = '' OR SomeCol IS NULL;
SELECT *
FROM #T
WHERE SomeCol = ''
UNION ALL
SELECT *
FROM #T
WHERE SomeCol IS NULL;
SELECT *
FROM #T
WHERE EXISTS ((SELECT NULL UNION SELECT '') INTERSECT SELECT SomeCol);
Et d'autres qui ne le sont pas...
SELECT *
FROM #T
WHERE IIF(SomeCol <> '',0,1) = 1;
SELECT *
FROM #T
WHERE NULLIF(SomeCol,'') IS NULL;
SELECT *
FROM #T
WHERE ISNULL(SomeCol,'') = '';
Anouar Mokhtari
Points
4
Ma meilleure solution :
WHERE
COALESCE(char_length(fieldValue), 0) = 0
COALESCE renvoie le premier expr non nul dans l'expression list().
si le fieldValue est null ou une chaîne vide alors : nous retournerons le deuxième élément puis 0.
si 0 est égal à 0, alors ce fieldValue est une chaîne nulle ou vide.
en python par exemple :
def coalesce(fieldValue):
if fieldValue in (null,''):
return 0
bonne chance
ADM-IT
Points
51
Charaf jra
Points
4206