我正在尝试更新大型代码库以正确指定CultureInfo
和/或IFormatProvider
格式化/解析值时。例如,在解析我从用户那里获得的值时,我CultureInfo.CurrentCulture
在调用时传递TryParse
,当将浮点数转换为字符串以保持持久性时,我CultureInfo.InvariantCulture
在调用时传递ToString
。
我的问题是:在生成 SQL 查询时,我应该使用不变的文化或 SQL 服务器的文化来格式化数字等吗?也就是说,如果我的电脑设置为 German(德国),这些查询中哪个是对的?
select foo from bar where baz = 123.45
或者
select foo from bar where baz = 123,45
同样,如果我使用 SQLCAST
将浮点值转换为字符串,那么 SQL 将使用什么语言环境进行转换?
我确实搜索了 SQL 文档,但到目前为止我找不到任何好的答案。我确实找到了一些有关日期格式的信息(SET DATEFORMAT 等),但仅此而已。
注意:我意识到将输入传递给 SQL 查询的首选方法是通过参数,因此我们假设为了参数,我有充分的理由将它们格式化为查询字符串。此外,处理查询输入只是更广泛问题的一部分。