写了一个SQL储存过程,如下
banzub表有一列
banzhu
1班
2班
3班
CREATE PROCEDURE new
@bzset char(20)
AS
BEGIN
SELECT * FROM banzub where banzu LIKE @bzset
END
如此简单的储存过程,本来想检验"LIKE"模糊查询的,居然在输入参数 '%' 后没有输出任何一行,而输入 '%%%' 后才能输出3行数据?
不用储存过程,直接执行查询语句 SELECT * FROM banzub where banzu LIKE ‘%' 又正常,输出3行
或者储存过程不传递参数,直接写
CREATE PROCEDURE new
AS
BEGIN
SELECT * FROM banzub where banzu LIKE ‘%’
END
也正常输出了3行!!!
怎么回事啊?
难道%符号在储存过程中不能作为参数传递。
朋友你生命的是@bzset char(20) 20个字符 当你只输入员一个%他会给你自动补充空格的 你把那个改成@bzset char(1)试试先
banzu 是不是char类型?
或者使用varchar或者nvarchar
CREATE PROCEDURE new
@bzset varchar(20)
AS
BEGIN
SELECT * FROM banzub where banzu LIKE @bzset
END