SQL将变量声明为nvarchar。使用dec变量作为';比如';或';包含';在where子句中
我已经声明了我的变量:SQL将变量声明为nvarchar。使用dec变量作为';比如';或';包含';在where子句中,sql,variables,where,sql-like,contain,Sql,Variables,Where,Sql Like,Contain,我已经声明了我的变量: declare @search as nvarchar set @search = 'road' 那么我实际上想在Where子句中包含以下内容: where unit.BuildingName like '%@search%' or property.Street like '%@search%' or unit.Street like '%@search%' 显然,这不起作用,因为它甚至没有查看我声明的变量 但是你能明白我想说什么吗 谢谢 查询中的@searc
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 Server(基于对
包含的的引用),您需要做两件事:
declare @search as nvarchar(255)
set @search = 'road';
注意增加了一个长度
然后:
如果这是动态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(500)
set @search = '%road%'
where
unit.BuildingName like @search or
property.Street like @search or
unit.Street like @search