编写SQL查询以使用通配符进行搜索

时间:2014-01-13 01:09:43

标签: mysql sql

我有一个用户需要使用通配符搜索的数据库。例如,用户需要按3011 *或201 *开头的票据搜索的订单号。由于票号有许多不同的号码,因此需要按参数构建。我知道我必须使用LIKE,如果搜索始终以相同的数字开头,我知道如何使用LIKE编写查询,但我不知道如何使用参数为用户输入编写它。

例如:

ITEM                ORDER_NO
Chair Order         3011134
Table Order         A230445
Tile Order          1032234

因此,当用户输入搜索以* 3011开头的订单时,将弹出主席顺序。

我知道如何搜索完全匹配但不能搜索通配符

我对此做了一些研究,但没有使用参数。任何帮助或指导将不胜感激。

2 个答案:

答案 0 :(得分:3)

请查看以下内容:SQL Wildcards

通常在SQL中,您将执行以下操作:

declare @Search varchar(20);
set @Search = '3011';

select * 
from TableName
where FieldName like '%' + @Search + '%';

这使您可以搜索在您正在查看的字段中间盯着,结束并具有搜索文本的内容。

注意SQL注入。(Alwasy验证用户输入。)

答案 1 :(得分:2)

SELECT item, order_no
FROM 'your table'
WHERE order_no
LIKE '3011%'

带有LIKE的%通配符将返回order_no以3011开头的所有行 - 因此,从您的表中,上面的查询将返回主席顺序 - 3011134