SQL 声明变量为 nvarchar。在 where 子句中使用 dec 变量作为 'like' 或 'Contains'
SQL declared variable as nvarchar. Use dec variable as 'like' or 'Contains' in where clause
我已经声明了我的变量:
declare @search as nvarchar
set @search = 'road'
然后我实际上想在我的 Where 子句中包含这个:
where
unit.BuildingName like '%@search%' or
property.Street like '%@search%' or
unit.Street like '%@search%'
显然行不通,因为这甚至没有查看我声明的变量。
但是你能看出我的意思吗?
谢谢!
@search
在您的查询中按字面解释,而不是作为变量值。你可能想要这个:
where
unit.BuildingName like '%' + @search + '%' or
property.Street like '%' + @search + '%' or
unit.Street like '%' + @search + '%'
如果我猜测您正在使用 SQL 服务器(基于对 contains
的引用),您需要做两件事:
declare @search as nvarchar(255)
set @search = 'road';
注意增加了一个长度。
然后:
where unit.BuildingName like '%' + @search + '%' or
property.Street like '%' + @search + '%' or
unit.Street like '%' + @search + '%'
如果这是动态 SQL 的一部分,您应该将 @search
作为字符串传递,而不是修改查询字符串。
您或许可以将您的逻辑简化为:
where (unit.BuildingName + property.Street + unit.Street) like '%' + @search + '%'
您应该像这样更改查询。
declare @search as nvarchar(500)
set @search = '%road%'
where
unit.BuildingName like @search or
property.Street like @search or
unit.Street like @search
我已经声明了我的变量:
declare @search as nvarchar
set @search = 'road'
然后我实际上想在我的 Where 子句中包含这个:
where
unit.BuildingName like '%@search%' or
property.Street like '%@search%' or
unit.Street like '%@search%'
显然行不通,因为这甚至没有查看我声明的变量。
但是你能看出我的意思吗?
谢谢!
@search
在您的查询中按字面解释,而不是作为变量值。你可能想要这个:
where
unit.BuildingName like '%' + @search + '%' or
property.Street like '%' + @search + '%' or
unit.Street like '%' + @search + '%'
如果我猜测您正在使用 SQL 服务器(基于对 contains
的引用),您需要做两件事:
declare @search as nvarchar(255)
set @search = 'road';
注意增加了一个长度。
然后:
where unit.BuildingName like '%' + @search + '%' or
property.Street like '%' + @search + '%' or
unit.Street like '%' + @search + '%'
如果这是动态 SQL 的一部分,您应该将 @search
作为字符串传递,而不是修改查询字符串。
您或许可以将您的逻辑简化为:
where (unit.BuildingName + property.Street + unit.Street) like '%' + @search + '%'
您应该像这样更改查询。
declare @search as nvarchar(500)
set @search = '%road%'
where
unit.BuildingName like @search or
property.Street like @search or
unit.Street like @search