Sca*_*net 18 sql-server parameters stored-procedures sql-like
我有一个存储过程,使用LIKE操作员在一些其他参数中搜索卡车位置
@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)
Run Code Online (Sandbox Code Playgroud)
我将其他参数置零并仅按位置搜索,但即使我使用该位置的全名,它也始终不返回任何结果
bum*_*mmi 34
你的数据类型@location nchar(20)应该是@location nvarchar(20),因为nChar有一个固定的长度(用空格填充).
如果Location也是nchar,你将不得不转换它:
... Cast(Location as nVarchar(200)) like '%'+@location+'%' ...
Run Code Online (Sandbox Code Playgroud)
要使用和AND条件启用可空参数,只需使用IsNull或Coalesce进行比较,这在您的示例中不需要使用OR.
例如,如果您想比较位置和日期和时间.
@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))
Run Code Online (Sandbox Code Playgroud)
小智 7
我正在做同样的事情。检查下面的声明。为我工作!
SELECT * FROM [Schema].[Table] WHERE [Column] LIKE '%' + @Parameter + '%'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102289 次 |
| 最近记录: |