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

是否有任何SQL系统在数字文本中使用逗号作为小数点?,sql,ado.net,localization,number-literal,Sql,Ado.net,Localization,Number Literal,据我所知,大多数SQL实现都坚持在数字文本中使用“.”小数点 有人用“,”来代替吗?(如许多欧洲国家所使用的),或者可以假定“.” 我遇到的具体情况是.NET/ADO.NET通过ODBC调用数据库。出于我不想讨论的原因,UPDATE语句将作为SQL字符串发送。NET在本地化方面非常聪明,并使用了用户本地化设置中指定的小数点。这可能会导致SQL语法错误。在特定情况下修复(强制使用英语样式的小数点)是很容易的,但我想确保它在所有情况下都能工作,或者至少知道它不起作用的情况 我想这可能是ADO.NET

据我所知,大多数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年,我们已经超越了这一点。

谢谢。是的,我知道如何进行转换-我过去在COM应用程序和KML文件中遇到过类似的问题,但您的代码对其他人很有用-一般情况下关于注入攻击的警告也是如此。