2

据我所知,大多数 SQL 实现都坚持使用 '.'。数字文字中的小数点。

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

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

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

4

1 回答 1

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 年,我们已经超越了这一点。

于 2012-09-06T16:17:26.450 回答