在sql server中使用LIKE通配符的查询
我想在我的ASP.NET web项目中执行一个小型SQL server搜索,我的数据库不大,所以我认为最好不要使用全文搜索 我想执行如下简单搜索:在sql server中使用LIKE通配符的查询,sql,sql-server,Sql,Sql Server,我想在我的ASP.NET web项目中执行一个小型SQL server搜索,我的数据库不大,所以我认为最好不要使用全文搜索 我想执行如下简单搜索: select * from mytable where columnA LIKE '%something%' 我可以通过以下方式使用=: select * from mytable where columnA='"+myVariable+"' 但我如何使用变量来代替类似短语中的%something%? 对吗?比如“+%myVariable%+”
select * from mytable where columnA LIKE '%something%'
我可以通过以下方式使用=:
select * from mytable where columnA='"+myVariable+"'
但我如何使用变量来代替类似短语中的%something%?
对吗?比如“+%myVariable%+”
我使用VS2010,C
谢谢你可以做如下事情:
var query = "SELECT * FROM MyTable WHERE columnA LIKE '%" + myVariable + "%'";
使用:
我刚刚尝试了这个,发现您可以执行以下操作:
SELECT * FROM whatever WHERE column LIKE '%'+@var+'%'
请尝试以下查询:
select * from tablename where colname like '%' + @varname + '%'
希望能有所帮助。以防其他人像我一样无意中看到这篇文章。在带有SQL 2012 Server后端的SSMS 2012上,我能够按如下方式使用代码,没有任何问题
DECLARE @myVariable varchar(MAX)
SET @myVariable = 'WhatYouAreLookingFor'
SELECT * FROM mytable
WHERE columnA LIKE '%' + @myVariable + '%'
Declare @MyVariable
Set @MyVariable = '%DesiredString%'
Select *
From Table_A
Where Field_A like @MyVariable
然后,每次您想要更改所需的字符串时,只需在Set语句中更改它
我知道这篇文章是在2012年之前发表的,这就是为什么我要提到这篇文章,以防有更新设置的人查看这篇文章。如果您担心sql注入,请尝试类似的方法。它更复杂,但它可以工作,并且应该满足安全性要求。假设有人使用名为@searchstring的参数将值传递到存储过程中
DECLARE @searchString nvarchar(100) = 'test',
@SQL nvarchar(max),
@foundSearchHit bit,
@paramdef nvarchar(max) = '@foundSearchHit bit OUTPUT'
SET @searchstring = '%' + @searchString + '%'
SET @SQL = '
SELECT TOP 1 @foundSearchHit = 1
FROM sys.databases WHERE [name] like ' +
QUOTENAME(@searchString,'''')
EXEC sp_executeSQL @SQL, @paramdef, @foundSearchHit = @foundSearchHit OUTPUT
SELECT @foundSearchHit
这应该可以解决问题。正确,但也很糟糕。连接字符串以生成SQL语句会使您对SQL注入敞开大门。假设myVariable有值';删除表mytable;?查看参数化查询或Linq变体中与DB@spender:无论如何,应在执行查询之前进行安全验证,因此这不是查询问题itself@sll我不相信。很难对将混合到SQL语句中的字符串进行安全验证。亲爱的朋友们,感谢你们的快速回答,我找到了正确的答案。为什么用不同的括号?我想你们在谈论单引号和双引号。我用它作为问题中给出的查询的一个例子,如下所示:从mytable中选择*,其中columnA='+myVariable+'。因此,在这个查询中,如果您想使用LIKE,那么在单引号后面添加%并以类似方式关闭它。
Declare @MyVariable
Set @MyVariable = '%DesiredString%'
Select *
From Table_A
Where Field_A like @MyVariable
DECLARE @searchString nvarchar(100) = 'test',
@SQL nvarchar(max),
@foundSearchHit bit,
@paramdef nvarchar(max) = '@foundSearchHit bit OUTPUT'
SET @searchstring = '%' + @searchString + '%'
SET @SQL = '
SELECT TOP 1 @foundSearchHit = 1
FROM sys.databases WHERE [name] like ' +
QUOTENAME(@searchString,'''')
EXEC sp_executeSQL @SQL, @paramdef, @foundSearchHit = @foundSearchHit OUTPUT
SELECT @foundSearchHit