【发布时间】:2021-12-15 12:41:25
【问题描述】:
我正在尝试更改点之后的值。自定义舍入。我正在将一个参数传递给函数(应该是真实值,但我可以使用 varchar 吗?) 在此示例中,我尝试使用带有子字符串的 varchar,但这会导致转换错误。 有人能告诉我我可以用什么方法来达到我的结果吗?也许是真正的数据类型值?但是我可以使用子字符串吗?
CREATE FUNCTION dbo.Myfunction
(
@Liczba varchar(255)
)
RETURNS varchar(255)
AS
BEGIN
if @Liczba >= 0 and @Liczba < 7 and substring(@Liczba, 3, 2) >= 0 and substring(@Liczba, 3, 2) <= 24
Return (substring(@Liczba, 0, 1) + (0.19));
if @Liczba >= 0 and @Liczba < 7 and substring(@Liczba, 3, 2) >= 25 and substring(@Liczba, 3, 2) <= 34
Return (substring(@Liczba, 0, 1) + (0.29));
if @Liczba >= 0 and @Liczba < 7 and substring(@Liczba, 3, 2) >= 35 and substring(@Liczba, 3, 2) <= 44
Return (substring(@Liczba, 0, 1) + (0.39));
if @Liczba >= 0 and @Liczba < 7 and substring(@Liczba, 3, 2) >= 45 and substring(@Liczba, 3, 2) <= 54
Return (substring(@Liczba, 0, 1) + (0.49));
if @Liczba >= 0 and @Liczba < 7 and substring(@Liczba, 3, 2) >= 55 and substring(@Liczba, 3, 2) <= 64
Return (substring(@Liczba, 0, 1) + (0.59));
if @Liczba >= 0 and @Liczba < 7 and substring(@Liczba, 3, 2) >= 65 and substring(@Liczba, 3, 2) <= 74
Return (substring(@Liczba, 0, 1) + (0.69));
if @Liczba >= 0 and @Liczba < 7 and substring(@Liczba, 3, 2) >= 75 and substring(@Liczba, 3, 2) <= 88
Return (substring(@Liczba, 0, 1) + (0.79));
if @Liczba >= 0 and @Liczba < 7 and substring(@Liczba, 3, 2) >= 89 and substring(@Liczba, 3, 2) <= 99
Return (substring(@Liczba, 0, 1) + (0.99));
if @Liczba >= 7 and @Liczba < 10 and substring(@Liczba, 3, 2) >= 0 and substring(@Liczba, 3, 2) <= 38
Return (substring(@Liczba, 0, 1) + (0.29));
if @Liczba >= 7 and @Liczba < 10 and substring(@Liczba, 3, 2) >= 39 and substring(@Liczba, 3, 2) <= 63
Return (substring(@Liczba, 0, 1) + (0.49));
if @Liczba >= 7 and @Liczba < 10 and substring(@Liczba, 3, 2) >= 64 and substring(@Liczba, 3, 2) <= 88
Return (substring(@Liczba, 0, 1) + (0.79));
if @Liczba >= 7 and @Liczba < 10 and substring(@Liczba, 3, 2) >= 89 and substring(@Liczba, 3, 2) <= 99
Return (substring(@Liczba, 0, 1) + (0.99));
if @Liczba >= 10 and @Liczba < 15 and substring(@Liczba, 4, 2) >= 0 and substring(@Liczba, 4, 2) <= 38
Return (substring(@Liczba, 0, 2) + (0.29));
if @Liczba >= 10 and @Liczba < 15 and substring(@Liczba, 4, 2) >= 39 and substring(@Liczba, 4, 2) <= 63
Return (substring(@Liczba, 0, 2) + (0.49));
if @Liczba >= 10 and @Liczba < 15 and substring(@Liczba, 4, 2) >= 64 and substring(@Liczba, 4, 2) <= 88
Return (substring(@Liczba, 0, 2) + (0.79));
if @Liczba >= 10 and @Liczba < 15 and substring(@Liczba, 4, 2) >= 89 and substring(@Liczba, 4, 2) <= 99
Return (substring(@Liczba, 0, 2) + (0.99));
if @Liczba >= 15 and @Liczba < 30 and substring(@Liczba, 4, 2) >= 0 and substring(@Liczba, 4, 2) <= 49
Return (substring(@Liczba, 0, 2) + (0.49));
if @Liczba >= 15 and @Liczba < 30 and substring(@Liczba, 4, 2) >= 50 and substring(@Liczba, 4, 2) <= 99
Return (substring(@Liczba, 0, 2) + (0.99));
if @Liczba >= 30 and @Liczba < 100 and substring(@Liczba, 4, 2) >= 0 and substring(@Liczba, 4, 2) <= 99
Return (substring(@Liczba, 0, 2) + (0.99));
if @Liczba >= 30 and @Liczba < 100 and substring(@Liczba, 4, 2) >= 0 and substring(@Liczba, 4, 2) <= 99
Return (substring(@Liczba, 0, 3) + (0.99));
if @Liczba >= 100 and @Liczba < 1000 and substring(@Liczba, 5, 2) >= 0 and substring(@Liczba, 5, 2) <= 99
Return (substring(@Liczba, 0, 4) + (0.99));
if @Liczba >= 1000 and @Liczba < 10000 and substring(@Liczba, 6, 2) >= 0 and substring(@Liczba, 6, 2) <= 99
Return (substring(@Liczba, 0, 5) + (0.99));
if @Liczba >= 10000 and @Liczba < 100000 and substring(@Liczba, 7, 2) >= 0 and substring(@Liczba, 7, 2) <= 99
Return (substring(@Liczba, 0, 6) + (0.99));
Return (@Liczba);
END
【问题讨论】:
-
这也一定是功课,因为我昨天已经看到了这段代码
-
不要转发您的(已关闭)问题;有一个编辑功能。使用上述功能改进您的问题并重新打开它。