1

我已经用 SQL 编写了这段代码:

alter proc verfinanfiltrado(@valor smallmoney) as
select idconta,vencimento,historico,original,formpagto,planoconta,clifor
from financeiro where original like @valor

这个过程有效,我想写一些类似的东西:

alter proc verfinanfiltrado(@valor smallmoney) as
select idconta,vencimento,historico,original,formpagto,planoconta,clifor
from financeiro where original like  % @valor % 

例如,该过程与 746.06 一起使用,但我想显示以 746 开头的所有值,例如 746.06、746.10、748.12

在 nvarchar 的情况下?

 alter proc verfinanfiltrado(@histo smallmoney) as
select idconta,vencimento,historico,original,formpagto,planoconta,clifor
from financeiro where historico  like  % @histo % 
4

3 回答 3

2

转换列(通过字符串转换或舍入)将阻止使用索引。不要这样做。反而...

from financeiro where @value <= original and original < @value + 1
于 2013-02-21T20:09:55.967 回答
1
WHERE original >= ROUND(@valor,0,1) AND original < ROUND(@valor,0,1) + 1

顺便说一句,对原始问题的评论中的 xQberts 解决方案也将起作用,但这是可悲的,因此您将从原始问题的任何不雅中受益

于 2013-02-21T20:23:57.607 回答
0

我已经解决了这个过程

alter proc vencevalor (@valor smallmoney)as
select idconta,vencimento,pagamento,historico,original,formpagto,planoconta,clifor
from financeiro where round(original,0,1) = round (@valor,0,1)  
order by idconta desc 

谢谢大家

于 2013-02-25T20:27:27.757 回答