sql喜欢查询问题

时间:2012-11-05 07:31:31

标签: c# sql

我正在尝试获取数据,这些数据在开头或中间或结尾都有description关键字。

以下是我的查询

like '%" + description + "' or '" + description + "%' or '%" + description + "%'

问题是它返回了无关的数据。

例如,如果我在描述中给出“as”,那么它也会在结果中选择“蛋糕”。

Description
------------------------------------------------------------
asd
asdasd
cake
Naw
Tast
ad

3 个答案:

答案 0 :(得分:2)

你只能写

like '%" + description + "%'

使用此方法,您可以检索所需的数据,因为它将数据开始,字符串在中间,并在不使用或语句的情况下使用该字符串结束。

答案 1 :(得分:1)

刚刚放

LIKE '%" + description + "%'

顺便说一下,如果你有多个“或”语句,你必须重写列名和比较器

mycolumn like '%" + description + "' or
mycolumn like '" + description + "%' or 
mycolumn like '%" + description + "%'

但在这种情况下不需要这样做。

你也可以查看准备好的陈述!

答案 2 :(得分:1)

因为你有这个'%" + description + "%'

为什么不直接

SELECT..FROM...WHERE columnName LIKE '%" + description + "%'"

使用SQL Injection购买您的查询容易受到攻击。改用参数

"
SELECT...
FROM...
WHERE columnName LIKE @description"

然后在查询中定义参数

command.Parameters.AddWithValue("@description", "%" + description + "%")