看下面这个存储过程
一个不大注意的存储过程的小细节。create proc pGetInforArticleDataBySearch
一个不大注意的存储过程的小细节。
@autoTypeCode        as varchar(6),
一个不大注意的存储过程的小细节。
@autoFittingCode     as varchar(3),
一个不大注意的存储过程的小细节。
@keyword            as nvarchar(10)
一个不大注意的存储过程的小细节。
as
一个不大注意的存储过程的小细节。
begin
一个不大注意的存储过程的小细节。
set @autoTypeCode='%'+@autoTypeCode+'%'
一个不大注意的存储过程的小细节。
set @autoFittingCode='%'+@autoFittingCode+'%'
一个不大注意的存储过程的小细节。
set @keyword='%'+@keyword+'%'
一个不大注意的存储过程的小细节。
SELECT * FROM dbo.vinfoArticle
一个不大注意的存储过程的小细节。
where autoTypeCode like @autoTypeCode and autoFittingCode like @autoFittingCode and title like @keyword
一个不大注意的存储过程的小细节。
end
我们可以看到,入参重新设置为like的使用值,这个时候,如果@autoTypeCode的入参值长度为6位的时候,例如:100001,set @autoTypeCode='%'+@autoTypeCode+'%'以后@autoTypeCode就变成了%10000,自然就匹配不到了。
所以我们必须把@autoTypeCode的长度设置的长一些,不能和数据库字段的长度相同。
例如:
一个不大注意的存储过程的小细节。create proc pGetInforArticleDataBySearch
一个不大注意的存储过程的小细节。
@autoTypeCode        as varchar(10),
一个不大注意的存储过程的小细节。
@autoFittingCode     as varchar(10),
一个不大注意的存储过程的小细节。
@keyword            as nvarchar(12)
一个不大注意的存储过程的小细节。
as
一个不大注意的存储过程的小细节。
begin
一个不大注意的存储过程的小细节。
set @autoTypeCode='%'+@autoTypeCode+'%'
一个不大注意的存储过程的小细节。
set @autoFittingCode='%'+@autoFittingCode+'%'
一个不大注意的存储过程的小细节。
set @keyword='%'+@keyword+'%'
一个不大注意的存储过程的小细节。
SELECT * FROM dbo.vinfoArticle
一个不大注意的存储过程的小细节。
where autoTypeCode like @autoTypeCode and autoFittingCode like @autoFittingCode and title like @keyword
一个不大注意的存储过程的小细节。
end

相关文章:

  • 2021-07-01
  • 2021-11-03
  • 2021-11-28
  • 2021-04-15
  • 2021-07-19
  • 2021-12-30
  • 2022-12-23
猜你喜欢
  • 2021-08-28
  • 2021-12-17
  • 2021-04-02
  • 2022-12-23
  • 2022-12-23
  • 2021-09-22
  • 2021-12-14
相关资源
相似解决方案