Comment puis-je vérifier si une chaîne Sql server est null ou vide
Je veux vérifier les données mais l'ignorer si elle est null ou vide. 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 de l'entreprise.OfferText si l'inscription.Offertext est une chaîne vide, ainsi que si elle est null.
Quelle est la solution la plus performante?
Vous devez vous connecter pour publier un commentaire.
Je pense que c':
est la solution la plus élégante.
Et de le décomposer un peu en pseudo code:
Dans cet exemple, si
listing.OfferText
est NULL, la fonction LEN() devrait aussi retourner la valeur NULL, mais qui n'a pas encore > 0.Mise à jour
J'ai appris des choses en 5 1/2 ans, depuis cette annonce, et le faire bien différemment aujourd'hui:
Ceci est similaire à la accepté de répondre, mais il a aussi une solution de secours en cas
Company.OfferText
est également nulle. Aucune des autres réponses à l'aide deNULLIF()
aussi le faire.Voici une autre solution:
Vous pouvez utiliser
ISNULL
et vérifiez la réponse contre le connu de sortie:Dans SQL Server 2012, vous avez
IIF
, e.g vous pouvez l'utiliser commeDe la même façon, vous pouvez vérifier si le champ est vide.
Utiliser la fonction LEN pour vérifier la valeur null ou vide de valeurs. Vous pouvez simplement utiliser LEN(@SomeVarcharParm) > 0. Cela renvoie false si la valeur est NULL, " ou ' '. C'est parce que LEN(NULL) retourne NULL NULL > 0 renvoie la valeur false. Aussi, LEN(' ') retourne 0. Voir pour vous-même l'exécuter:
NULLIF()
et fusionner pour une chaîne vide sicompany.OfferText
est null. Toutefois, le 2èmeNULLIF()
appel ici ne sert à rien, comme si la valeur est une chaîne vide, vous êtes juste à s'unir de nouveau à une chaîne vide de toute façon.Cette combinaison simple de s'UNIR et de NULLIF devrait faire l'affaire:
Remarque: Ajouter une autre chaîne vide comme la dernière FUSIONNENT argument, si vous voulez la déclaration pour renvoyer une chaîne vide à la place de NULL si les deux valeurs sont NULLES.
Je sais que c'est un vieux thread mais je viens de voir un des premiers postes ci-dessus et il n'est pas correct.
Si vous utilisez LEN(...) de déterminer si le champ est NULL ou VIDE alors vous avez besoin de l'utiliser comme suit:
Voici une solution, mais je ne sais pas si c'est la meilleure....
cette syntaxe :
a travaillé pour moi dans Microsoft SQL Server 2008 (SP3)
Pour empêcher les enregistrements avec
Empty
ouNull
valeur dans SQL résultatnous pouvons simplement ajouter
..... WHERE Column_name != '' or 'null'
Essayer
(len(rtrim(ltrim(isnull(MyField,")))) !=0
au-dessus de accueille des espaces.