Je veux vérifier les données, mais ignorez-les si elles sont nulles ou vides. Actuellement, la requête est la suivante ...
Select
Coalesce(listing.OfferText, company.OfferText, '') As Offer_Text,
from tbl_directorylisting listing
Inner Join tbl_companymaster company
On listing.company_id= company.company_id
Mais je veux obtenir company.OfferTex
t si listing.Offertext
est une chaîne vide, ainsi que si elle est nulle.
Quelle est la solution la plus performante?
sql-server-2005
digiguru
la source
la source
Dans cet exemple, si
listing.OfferText
est NULL, la fonction LEN () doit également retourner NULL, mais ce n'est toujours pas> 0.Mettre à jour
J'ai appris certaines choses au cours des 5 1/2 années écoulées depuis la publication de cet article, et je le fais maintenant très différemment:
Ceci est similaire à la réponse acceptée, mais elle a également un repli au cas où elle
Company.OfferText
serait également nulle. Aucune des autres réponses actuellesNULLIF()
ne le fait également.la source
la source
Voici une autre solution:
la source
Vous pouvez utiliser
ISNULL
et vérifier la réponse par rapport à la sortie connue:la source
Dans SQL Server 2012, vous avez
IIF
, par exemple, vous pouvez l'utiliser commeDe la même manière, vous pouvez vérifier si le champ est vide.
la source
Utilisez la fonction LEN pour vérifier les valeurs nulles ou vides. Vous pouvez simplement utiliser LEN (@SomeVarcharParm)> 0. Cela retournera false si la valeur est NULL, '' ou ''. En effet, LEN (NULL) renvoie NULL et NULL> 0 renvoie false. De plus, LEN ('') renvoie 0. Voyez par vous-même exécuter:
la source
la source
NULLIF()
et fusionner avec une chaîne vide sicompany.OfferText
est nul. Cependant, le deuxièmeNULLIF()
appel ici ne sert à rien, comme si cette valeur était une chaîne vide, vous allez simplement fusionner de nouveau avec une chaîne vide de toute façon.Cette simple combinaison de COALESCE et NULLIF devrait faire l'affaire:
Remarque: Ajoutez une autre chaîne vide comme dernier argument COALESCE si vous souhaitez que l'instruction renvoie une chaîne vide au lieu de NULL si les deux valeurs sont NULL.
la source
Je sais que c'est un vieux fil, mais je viens de voir l'un des messages précédents ci-dessus et ce n'est pas correct.
Si vous utilisez LEN (...) pour déterminer si le champ est NULL ou VIDE, vous devez l'utiliser comme suit:
la source
Voici une solution, mais je ne sais pas si c'est la meilleure ...
la source
la source
cette syntaxe:
travaillé pour moi dans Microsoft SQL Server 2008 (SP3)
la source
Pour empêcher les enregistrements avec
Empty
ou laNull
valeur dans le résultat SQLon peut simplement ajouter
..... WHERE Column_name != '' or 'null'
la source
la source
[Nom_colonne]> '' exclut les valeurs Null et les chaînes vides. Il y a un espace entre les guillemets simples.
la source
Cela répond également aux besoins des espaces.
la source