在我的开发PC上,我使用美国区域设置,所以当我从c#/ asp.net发送到sql server存储过程200.00时,它需要200, 但是在生产服务器上,使用其他区域设置时,它将其设置为20000,因为小数点为“,”。 好的,我知道我可以替换它,但我需要永久解决方案,所以我的问题是: 有没有办法确定我发送十进制数,不依赖于区域设置?
答案 0 :(得分:2)
听起来你的问题不是SQL Server,而是解析小数。您的问题似乎有点模糊,因为“实际十进制数”的字符串格式因地区而异。如果要以区域设置不变的方式将字符串转换为小数,则可以在解析时指定格式提供程序。
例如:
decimal.Parse("20.000",
System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
答案 1 :(得分:1)
我猜你是将值作为字符串发送,或者作为VARCHAR参数发送到过程,或者(更有可能)通过连接SQL。
在任何一种情况下,解决方案都是相同的 - 将数值作为数字类型而不是字符串发送,和/或使用参数化查询而不是连接字符串来生成SQL语句。