C# 在SQL Server中设置十进制数
我有一个十进制字段,当我在使用葡萄牙语SQL Server的机器上将字符串“1000,00”转换为十进制时,它可以正确地保存1000,但在操作系统为英语的服务器上,它可以保存100000 我已经将区域设置设置为葡萄牙语,将数据库排序规则设置为Latin1_General_CI_ASC# 在SQL Server中设置十进制数,c#,sql-server,linq-to-sql,C#,Sql Server,Linq To Sql,我有一个十进制字段,当我在使用葡萄牙语SQL Server的机器上将字符串“1000,00”转换为十进制时,它可以正确地保存1000,但在操作系统为英语的服务器上,它可以保存100000 我已经将区域设置设置为葡萄牙语,将数据库排序规则设置为Latin1_General_CI_AS 我在服务器上没有做什么?您应该在计算机之间以十进制(或其他适当的数字类型)的形式传输它,如果可能,存储为数字类型,而不是字符串。如果您确实需要使用字符串,请在适当的位置使用来转换数字类型,以避免类似这样的区域设置错误
我在服务器上没有做什么?您应该在计算机之间以
十进制
(或其他适当的数字类型)的形式传输它,如果可能,存储为数字类型,而不是字符串
。如果您确实需要使用字符串
,请在适当的位置使用来转换数字类型,以避免类似这样的区域设置错误
简言之,服务器的区域性永远不应该发挥作用:您应该将其固定。您应该将其作为
十进制
(或其他适当的数字类型)在计算机之间传输,并尽可能将其存储为数字类型,而不是字符串
。如果您确实需要使用字符串
,请在适当的位置使用来转换数字类型,以避免类似这样的区域设置错误
简而言之,服务器的区域性永远不应该发挥作用:您应该将其固定。这是因为您有一个逗号,而不是句点。在英语中,句号用于从数字的小数部分指定整数。因此,字符串
1000.00
将转换为1000。请在例如Management Studio中执行此操作,并报告结果:select@@language
,这是因为您有逗号而不是句点。在英语中,句号用于从数字的小数部分指定整数。因此,一个字符串1000.00
将转换为1000。请您在示例管理工作室中执行此操作,并报告结果:select@@language
我使用了固定区域性,它工作正常,谢谢。转换为特定(valor,新文化信息(“pt BR”);我使用了不变的文化,这很有效,谢谢。转换为特定(valor,新文化信息(“pt BR”);