任何SQL系统都使用逗号作为数字文字中的小数点吗?

时间:2012-09-06 15:41:37

标签: sql ado.net localization number-literal

从我可以确定的,大多数SQL实现都坚持'。'数字文字中的小数点。

是否使用','代替? (即许多欧洲国家使用的),或者可以'。'假设?

我的具体情况是,.NET / ADO.NET通过ODBC调用数据库。由于我不打算进入的原因,UPDATE语句将作为SQL字符串发送。 .NET的本地化和使用用户本地化设置中指定的小数点非常聪明。这可能导致SQL语法错误。在特定情况下(强制英文风格小数点)很容易修复,但我想确保它在所有情况下都能正常工作,或者至少知道它不起作用的情况。

我认为这可能是ADO.NET连接配置中的一个设置,但我找不到任何内容。

1 个答案:

答案 0 :(得分:1)

由于逗号在SQL中用于单独的东西,我怀疑任何SQL系统都允许它。

回到你的问题,当然最好使用带有参数的ADO.NET来避免这些问题,但是如果你被迫连接字符串使用FormatCultureInvariant来获得一个不变的字符串从你的号码。

这种扩展方法应该很方便

public static class DecimalHelpers {
    public static string ToInvariantString(this Decimal Numero) {
        return Numero.ToString("0.####", CultureInfo.InvariantCulture);
    }
}

我强烈建议你反对字符串连接,它是一个主要的PITA,可能是SQL注入攻击和其他问题的根源。这是2012年,我们已经超越了它。