gpt4 book ai didi

c# - 将 Varchar 转换为具有千位分隔符错误的十进制

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:13 30 4
gpt4 key购买 nike

今天想知道为什么这么简单的sql语句没有执行成功却返回错误:

GO
SELECT CAST('1,234.00' AS DECIMAL(22,2))
GO
SELECT CONVERT(DECIMAL(22,2), '1,234.00')

如果我去掉千位分隔符,我发现脚本执行成功。

GO
SELECT CAST('1234.00' AS DECIMAL(22,2))
GO
SELECT CONVERT(DECIMAL(22,2), '1234.00')

那么问题来了,为什么sql server不接受千位分隔符作为输入呢?

此外,我发现在 C# 中成功执行了相同的逻辑。

static void Main(string[] args)
{
string s = "1,234.00";
Console.WriteLine(decimal.Parse(s)); // result 1234.00
}

为什么他们对类型转换对象有不同的政策?我已经在 C# 上验证了字符串,并且验证工作正常。但是,当我将字符串加载到 sql server 中时,出现错误。

最佳答案

尝试通过货币进行转化。

declare @d decimal(10,2)
SELECT @d = CAST('1,234.00' AS money)
select @d
GO
SELECT CONVERT(money, '1,234.00')

会给予

1234.00
1234.00

同理

declare @m money = 1234
select CONVERT(varchar(20), @m, 1)

给予

1,234.00

参见 http://msdn.microsoft.com/en-us/library/aa226054(v=sql.80).aspx

关于c# - 将 Varchar 转换为具有千位分隔符错误的十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17941943/

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