从我可以确定的,大多数SQL实现都坚持'。'数字文字中的小数点。
是否使用','代替? (即许多欧洲国家使用的),或者可以'。'假设?
我的具体情况是,.NET / ADO.NET通过ODBC调用数据库。由于我不打算进入的原因,UPDATE语句将作为SQL字符串发送。 .NET的本地化和使用用户本地化设置中指定的小数点非常聪明。这可能导致SQL语法错误。在特定情况下(强制英文风格小数点)很容易修复,但我想确保它在所有情况下都能正常工作,或者至少知道它不起作用的情况。
我认为这可能是ADO.NET连接配置中的一个设置,但我找不到任何内容。
答案 0 :(得分:1)
由于逗号在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年,我们已经超越了它。