无法在查询中从TextBox进行部分匹配

时间:2012-11-27 12:04:07

标签: sql ado.net

我有一个列有“Tom Hardy”这样的数据的列,我在这个列中添加了一个新查询,如下所示:

SELECT  Number, Name, Business, [Tax File No], Phone
FROM            Archive
WHERE        (Name = @Name)

当我输入像“Tom Hardy”这样的全名时它起作用,但我想通过搜索“Tom”或“Hardy”找到结果。

我也尝试过:

SELECT  Number, Name, Business, [Tax File No], Phone
FROM            Archive
WHERE        (Name IN (@Name))

都没有工作。

使用Visual Studio 2010与C#和SQL数据库连接。

请帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

您需要在参数

中添加通配符
WHERE Name LIKE '%' + @Name + '%'

所以

SELECT  Number, Name, Business, [Tax File No], Phone
FROM            Ahrcive
WHERE        (Name COLLATE UTF8_GENERAL_CI like '%' + @Name + '%')

I don't think you can do this using the 'in' keyword

答案 1 :(得分:1)

Dave是对的,除了mybe你还想检查小写/大写的情节, 也许这就是你没有收到好成绩的原因

喜欢:

SELECT  Number, Name, Business, [Tax File No], Phone
FROM            Archive
WHERE        (LOWER(Name) like '%' + LOWER(@Name) + '%')

此语句将两个值都转换为小写,并且比较再次有效