SQL:SQL Like语句,参数值不返回所需的值

时间:2013-01-23 14:22:17

标签: sql stored-procedures

我正在尝试在asp.net web应用程序中实现搜索,我查询表格并将搜索词与某些列匹配。

为了实现部分搜索,我想,我可以使用Like子句。所以我写这样的SQL程序 -

CREATE PROCEDURE sproc_SEARCH
    @author char(200)
AS
    SELECT * FROM Table WHERE column LIKE '%' + @author + '%'

上面的过程应该返回一些行,但它不会

但是,如果我只是运行以下sql语句,它会给我所需的行

SELECT * FROM Table WHERE column LIKE '%bha%'

我不明白为什么会这样,可以使用一些帮助。

由于

2 个答案:

答案 0 :(得分:5)

试试这个:

@author varchar(200)

答案 1 :(得分:4)

这可能与@author代替CHAR而不是VARCHAR有关,因此您有尾随空格。使用VARCHAR

CREATE PROCEDURE sproc_SEARCH
    @author varchar(200)
AS
    SELECT * FROM Table WHERE column LIKE '%' + @author + '%'

或修剪参数:

CREATE PROCEDURE sproc_SEARCH
    @author char(200)
AS
    SELECT * FROM Table WHERE column LIKE '%' + RTRIM(LTRIM(@author)) + '%'