Я пытаюсь обновить большую кодовую базу, чтобы правильно указать CultureInfo
и / или IFormatProvider
при форматировании / разборе значений. Например, при разборе значения, которое я получаю от пользователя, я передаю CultureInfo.CurrentCulture
при вызове TryParse
, а при преобразовании числа с плавающей запятой в строку для персистентности я передаю CultureInfo.InvariantCulture
при вызове ToString
.
У меня такой вопрос: при генерации запросов SQL я должен форматировать числа и тому подобное, используя инвариантную культуру, или культуру SQL-сервера, или что? Что сказать, если мой компьютер настроен на немецкий (Германия), какой из этих запросов правильный?
select foo from bar where baz = 123.45
или
select foo from bar where baz = 123,45
Аналогично, если я использую SQL CAST
для преобразования значения с плавающей запятой в строку, какую локаль SQL будет использовать для преобразования?
Я провел поиск в документации по SQL, но пока не могу найти хороших ответов. Я нашел некоторую информацию о форматировании даты (SET DATEFORMAT и т. П.), Но это все.
ПРИМЕЧАНИЕ : я понимаю, что предпочтительный способ передачи входных данных в запрос SQL - через параметры, поэтому давайте предположим, что для аргумента у меня есть веская причина отформатировать их в строку запроса. Кроме того, обработка ввода запроса является лишь частью более широкого вопроса.