sql-server - tabla - procedimientos almacenados sql
Usando el operador LIKE con parĂ¡metros de procedimiento almacenados (2)
Su tipo de datos para @location nchar(20)
debe ser @location nvarchar(20)
, ya que nChar tiene una longitud fija (llena de espacios).
Si Location es nchar también, tendrás que convertirlo:
... Cast(Location as nVarchar(200)) like ''%''+@location+''%'' ...
Para habilitar los parámetros anulables con AND
, simplemente use IsNull o Coalesce para comparar, que no es necesario en su ejemplo usando OR
.
por ejemplo, si desea comparar para la Ubicación Y la Fecha y la Hora.
@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))
Tengo un procedimiento almacenado que utiliza el operador LIKE
para buscar la ubicación de un camión entre algunos otros parámetros
@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)
Anulo los otros parámetros y busco solo por ubicación, pero siempre no arroja resultados incluso cuando utilicé el nombre completo de la ubicación
EG: COMPARAR CON EL NOMBRE DEL PUEBLO
ALTER PROCEDURE POSMAST
(@COLUMN_NAME VARCHAR(50))
AS
SELECT * FROM TABLE_NAME
WHERE
village_name LIKE + @VILLAGE_NAME + ''%'';