SQLServer+储存过程+模糊查询+结果空值+rtrim() 函数+模糊查询字符拼接

SQLServer+储存过程+模糊查询+结果空值+字符拼接


大家好,我是EverdayForCode。你,今天学习了吗?

在做SQLServer实验时,有一个题目是这样的:

Q1:编写一个名为“SelectSTUByNamePROC”的存储过程,存储过程接收一个名为“@name”的参数,存储过程的作用是根据“@name”进行模糊查询,从学生表中查询姓名中含有“@name”的学生信息。
Q2:执行存储过程“SelectSTUByNamePROC”,查询名字中含有“家”的学生。

最开始代码是这样写的:
建立“SelectSTUByNamePROC”的存储过程

create procedure SelectSTUByNamePROC
@name char(20)
as
begin
select *
from student
where sname like '%'+@name+'%'
end

调用存储过程

exec SelectSTUByNamePROC '家'

执行结果
在这里插入图片描述发现执行结果是空的。
原因:

@name char(20)

定义时@name 长度为char(20),当你执行存储过程,输入参数不足char(20)时会自动向后填充空格,也就是说@name的值不单单是一个
‘家’字符,所以匹配不到。
更改方法:
使用rtrim() 函数去掉@name右边的空格字符

create procedure SelectSTUByNamePROC
@name char(20)
as
begin
select *
from student
where sname like '%'+rtrim(@name)+'%'
end

结果:
在这里插入图片描述
总结:
在建立存储过程设计到模糊查询时,使用rtrim() 函数去掉@name右边的空格字符即可。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值