是否有任何SQL系统在数字文本中使用逗号作为小数点



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

有人用","代替吗?(即许多欧洲国家使用的),或者可以使用"。"被假定?

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

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

由于逗号在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年。

相关内容

  • 没有找到相关文章