存储过程中的模糊查询及执行

camark 2004-09-21 11:12:55
存储过程:
CREATE PROCEDURE SearchByName
@Name char (30)
AS

SELECT Name FROM Class WHERE Name LIKE '%'+@Name+'%'
GO

为什么执行的时候不能实现模糊查询呢

EXEC SearchByName '1'
数据库中有不止一个含有1的记录,但是一个都查询不出来,是我的存储结构有问题么
...全文
134 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mschen 2004-09-22
  • 打赏
  • 举报
回复
我知道是什么原因了:你定义的@name 是char(30),如果@name小于30个字符,就会用空格来填充的,这些空格也是有意义的,所以导致了你查不出结果.你可以这样把char(30)改成varchar(30)
CREATE PROCEDURE SearchByName
@Name varchar (30)
AS
SELECT * FROM customers WHERE companyname LIKE '%'+@Name+'%'
GO

heibai520 2004-09-22
  • 打赏
  • 举报
回复
是的楼上说得也没错!
改成varchar(30)!还有把like''
CREATE PROCEDURE SearchByName
@Name varchar (30)
AS
SELECT * FROM customers WHERE companyname LIKE '%'+@Name+'%'
GO
Andy__Huang 2004-09-21
  • 打赏
  • 举报
回复
換一種方法試試
.............
SELECT Name FROM Class WHERE charindex(@Name,Name)>0
.....

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧