Как я могу преобразовать текст с локализованным числовым форматом в число в MS SQL Server? - PullRequest
1 голос
/ 13 февраля 2009

Допустим, у меня есть номер в немецком формате чисел "1,00", который равен 1,0 в локали en-US.

Существует ли встроенный способ преобразования этого текста в T-SQL в соответствующее число? Похоже, что CONVERT и CAST принимают только цифры с '.' как десятичный разделитель, и я не вижу способа сказать им иначе.

Я думал о том, чтобы просто заменить ',' на '.' но это становится уродливым, если у меня есть немецкий номер с разделителем тысяч, например "1.000,00".

Выполнение преобразования после получения «неправильного» результата SQL невозможно.

Ответы [ 2 ]

1 голос
/ 13 февраля 2009

Если вы хотите сделать это внутри SQL Server, вам нужно будет создать хранимую процедуру CLR / пользовательскую функцию, которая будет принимать строку в качестве параметра и возвращать требуемый числовой тип. Возможно, вы также захотите взять параметр, который указывает, какие имена регионов (например, en-US) вы можете использовать для указания культуры, используемой для определения шаблона синтаксического анализа.

Затем в коде вы вызываете метод TryParse для Double / Decimal / Int32 и используете соответствующий CultureInfo для указания шаблона разбора. Вы можете просмотреть их несколько раз или использовать другую информацию для определения правильного шаблона.

0 голосов
/ 13 февраля 2009

Я бы порекомендовал вам сделать это на уровне приложения, так как приложение знает о локали. Какой язык / рамки вы используете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...