gpt4 book ai didi

tsql - 为什么 SQL 函数将小数位更改为全零?

转载 作者:行者123 更新时间:2023-12-02 08:48:48 25 4
gpt4 key购买 nike

好的,我有一个 nvarchar 数字,有 2 位小数。如果我通过一个非常简单的函数运行它,它会将所有小数位更改为零,我不确定为什么或如何停止它。

这是基本功能(实际上是更大功能的一部分,但这是导致我出现问题的原因)。

create FUNCTION [dbo].[z_test](@amt as nvarchar)
RETURNS decimal(18,4)
BEGIN
declare @amt1 as decimal(18,4)
set @amt1=cast(@amt as decimal(18,4))
return @amt1
END

所以如果我运行这个 SQL 语句

select cast('3.48' as decimal(18,4)), dbo.z_test('3.48')

我希望返回的列相同。但是我得到的是3.4800 3.0000

关于为什么会发生这种情况或者我该如何改变它有什么想法吗?这是在 SQL Server 2005 中。提前致谢。

最佳答案

您应该在函数参数中为 nvarchar 指定一个长度,否则在这种情况下它将假定长度为 1,从而截断您的输入:

(@amt as nvarchar(10))

关于tsql - 为什么 SQL 函数将小数位更改为全零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10229849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com