Преобразование Nvarchar в десятичное не удается - PullRequest
0 голосов
/ 23 мая 2019

У меня есть база данных Microsoft SQL 2008 R2, которая хранит десятичные дроби как Nvarchar (20).По какой-то причине все поля дополняются пробелами.

Преобразование завершается с ошибкой:
" Сообщение 8114, уровень 16, состояние 5, строка 7
Ошибка преобразования данныхвведите nvarchar в числовое значение.
"

Я удаляю пробелы с RTRIM(), заменяю запятую точкой с помощью REPLACE() и преобразую с помощью CAST().Эта строка не удастся.Я добавил вторую строку без приведения, просто чтобы визуально проверить значение, но не смог увидеть причину его сбоя.Затем я снова раскомментировал свою первую строку, и кастинг сработал.Но только если вторая строка вместе с ней.Я понятия не имею, что вызывает это.

SELECT
    CAST(REPLACE(RTRIM(nvarcharDecimalValue),',','.') AS DECIMAL(12,3)) as WillFailIfAlone,
    REPLACE(RTRIM(nvarcharDecimalValue),',','.') as NeedToBeHere
FROM myTable

Значение, которое я ожидаю получить взамен, - это любое десятичное число, разделенное точкой.Выполнение запроса только с вручную введенным значением работает нормально.

Например, это:

SELECT 
    CAST(REPLACE(RTRIM('                5,86'),',','.') AS DECIMAL(18,3)) AS test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...