J'ai une procédure stockée qui utilise l'opérateur LIKE
pour rechercher un emplacement de camion parmi d'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)
J'annule les autres paramètres et recherche par emplacement uniquement mais cela ne renvoie toujours aucun résultat même lorsque j'utilise le nom complet de l'emplacement
Votre type de données pour @location nchar(20)
doit être @location nvarchar(20)
, car nChar a une longueur fixe (remplie d'espaces).
Si Location est également nchar, vous devrez le convertir:
... Cast(Location as nVarchar(200)) like '%'+@location+'%' ...
Pour activer les paramètres Nullable avec et la condition AND
, utilisez simplement IsNull ou Coalesce pour la comparaison, ce qui n'est pas nécessaire dans votre exemple en utilisant OR
.
par exemple. si vous souhaitez comparer le lieu ET la date et l'heure.
@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 '%'+IsNull(@location,Location)+'%')) and [Date]=IsNUll(@date,date) and [Time] = IsNull(@time,Time))
Je travaillais dessus. Vérifiez la déclaration ci-dessous. A travaillé pour moi !!
SELECT * FROM [Schema].[Table] WHERE [Column] LIKE '%' + @Parameter + '%'