在sql server中使用LIKE通配符查询

时间:2011-10-18 08:23:14

标签: sql sql-server

我想在我的ASP.NET网站项目中执行小型SQL服务器搜索,我的数据库不大,所以我认为最好不要使用全文搜索 我想执行这样一个简单的搜索:

select * from mytable where columnA LIKE '%something%'

我可以通过以下方式使用=:

select * from mytable where columnA='"+myVariable+"'

但是如何在LIKE短语中使用变量而不是%something%? 这是对的吗? LIKE '"+%myVariable%+"' ???

我使用VS2010,C#

感谢

8 个答案:

答案 0 :(得分:10)

使用:

where columnA LIKE '%' + myVariable + '%'

答案 1 :(得分:8)

WHERE
columnName LIKE '%' + myVarCharVariable +'%'

答案 2 :(得分:5)

尝试此查询:

select * from tablename where colname like '%' + @varname + '%'

希望它有所帮助。

答案 3 :(得分:4)

我刚试过这个,发现你可以这样做:

SELECT * FROM whatever WHERE column LIKE '%'+@var+'%'

答案 4 :(得分:1)

DECLARE @myVariable varchar(MAX)
SET @myVariable = 'WhatYouAreLookingFor'
SELECT * FROM mytable 
  WHERE columnA LIKE '%' + @myVariable + '%'

答案 5 :(得分:1)

如果其他人像我一样偶然发现这个帖子。在带有SQL 2012 Server后端的SSMS 2012上,我能够使用以下代码而不会出现问题。

  var precalc = [];

  var bar = chart.selectAll("g").data(data)
    .enter().append("g")
    .each(function(d,i) { precalc[i] = calculateValue(d)})
    .attr("width", function(d,i) {return precalc[i]+1})
    .attr("height", function(d,i) {return precalc[i]*2});

然后,每次要更改Desired String时,只需在Set语句中更改它。

我知道这篇文章是在2012年之前发布的,这就是为什么我提到它以防有人使用更新的设置来查找这篇文章。

答案 6 :(得分:0)

你可以这样做:

var query = "SELECT * FROM MyTable WHERE columnA LIKE '%" + myVariable + "%'";

答案 7 :(得分:0)

如果您担心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

应该可以解决问题。