小弟建了一个表:addressbook。它有两个字段tel和name,其中tel是主键。表中有几个记录如下:123456   杨老师家
654321   邓杨
110119   三杨开泰我用下面两种的SQL语句查询姓名中包含有"杨"字的人,都成功了,见下:
方法一:select * from addressbook where name like '%杨%'
方法二:select * from addressbook where name like '%'+'杨'+'%'由于经常需要这种查询,遂建立了一个存储过程select_record_name如下:
CREATE procedure select_record_name
@name char(15)
as
select * from addressbook where name like '%'+@name+'%'该存储过程通过了语法检查,但这样查询出来却什么也没有:select_record name '杨'请问这是怎么回事啊?
谢谢大家了!

解决方案 »

  1.   

    --try
    CREATE procedure select_record_name
    @name varchar(15)
    as
    select * from addressbook where name like '%'+@name+'%'
    go
    --orCREATE procedure select_record_name
    @name char(15)
    as
    select * from addressbook where name like '%'+rtrim(@name)+'%'
    go
      

  2.   

    你用char会自动补齐不足空格,你的情况下就变成了'杨             '而不是你要的'杨'当然就不会出结果了
      

  3.   

    字段@name char(15)应该改为@name varchar(15)
      

  4.   

    谢谢LouisXIV(夜游神),问题解决了!