En utilisant COMME opérateur avec les paramètres de procédure stockée
J'ai une procédure stockée qui utilise le LIKE
opérateur pour rechercher un emplacement du camion parmi quelques autres paramètres
@location nchar(20),
@time time,
@date date
AS
select
DonationsTruck.VechileId, Phone, Location, [Date], [Time]
from
Vechile, DonationsTruck
where
Vechile.VechileId = DonationsTruck.VechileId
and (((Location like '%'+@location+'%') or (Location like '%'+@location) or (Location like @location+'%') ) or [Date]=@date or [Time] = @time)
Je nulles les autres paramètres de recherche par emplacement, mais elle revient toujours pas de résultats, même lorsque j'ai utilisé le nom complet de l'emplacement
Afin de gérer correctement les valeurs NULL, vous devez vérifier de façon explicite, par exemple
Mauvaises habitudes pour le coup : à l'aide de vieux-style Jointures - que les vieux style liste séparée par des virgules de tables style a été interrompu à la norme ANSI-92 de la Norme SQL (plus de 20 ans il ya)
( [Date] = @Date or @Date is NULL )
. Au fait, vous avez uniquement besoin de vérifier pour '%' + @location + '%'
, les deux autres l'emplacement des tests sont redondantes.Mauvaises habitudes pour le coup : à l'aide de vieux-style Jointures - que les vieux style liste séparée par des virgules de tables style a été interrompu à la norme ANSI-92 de la Norme SQL (plus de 20 ans il ya)
OriginalL'auteur Scarnet | 2013-05-05
Vous devez vous connecter pour publier un commentaire.
Votre type de données pour
@location nchar(20)
devrait être@location nvarchar(20)
, depuis nChar a une longueur fixe (rempli avec des Espaces).Si l'Emplacement est nchar trop, vous devrez la convertir:
Pour permettre nullable paramètres avec et
AND
condition suffit d'utiliser la fonction IsNull ou Fusionnent pour comparaison, ce qui n'est pas nécessaire dans votre exemple à l'aide deOR
.par exemple, si vous voulez comparer la Localisation ET de la Date et de l'Heure.
Emplacement like '%'+IsNull(@emplacement,emplacement)+'%') va retourner tous les enregistrements si l'emplacement de paramètre est null, ce qui pourrait ne pas être le comportement voulu. la question est de savoir si il n'existe pas de critères de recherche (si la valeur est null emplacement param considérée, aucun des critères de recherche) a adopté, le SP retour de tout ou rien? (s'il vous plaît corriger le commentaire restriction ici, si mettre le paramètre avec le @ symble, S. O. pense que c'est à quelqu'un 🙂
OriginalL'auteur bummi
Je travaillais sur la même. Vérifier la déclaration ci-dessous. A fonctionné pour moi!!
OriginalL'auteur Singh T
PAR EXEMPLE : COMPARER À UN VILLAGE DU NOM DE
OriginalL'auteur Ranga