据我所知,大多数SQL实现都坚持使用"."数字文字中的小数点。
有人用","代替吗?(即许多欧洲国家使用的),或者可以使用"。"被假定?
我遇到的具体情况是,.NET/ADO.NET通过ODBC调用数据库。由于我不想深入讨论的原因,UPDATE语句是作为SQL字符串发送的。NET在本地化和使用用户本地化设置中指定的小数点方面非常聪明。这可能会导致SQL语法错误。在特定情况下修复它很容易(强制使用英语风格的小数点),但我想确保它在所有情况下都能工作,或者至少知道它不工作的情况。
我以为这可能是ADO.NET连接配置中的一个设置,但我一直找不到任何内容。
由于逗号在SQL中用于单独的东西,我怀疑任何SQL系统都允许它。
回到你的问题,当然最好使用带参数的ADO.NET来避免问题,但如果你被迫连接字符串,请使用Format
和CultureInvariant
从你的数字中获得一个不变的字符串。
这种扩展方法应该是方便的
public static class DecimalHelpers {
public static string ToInvariantString(this Decimal Numero) {
return Numero.ToString("0.####", CultureInfo.InvariantCulture);
}
}
我强烈建议您不要使用字符串串联,这是一个主要的PITA,可能是SQL注入攻击和其他问题的根源。现在是2012年,我们已经超越了2012年。