Я хотел отдать это команде, потому что я в тупике. Любые предложения будут оценены.
Я загружаю таблицу с данными из другой таблицы, и в ходе этого процесса происходит изменение типа данных с VARCHAR на NUMERIC. Я получаю сообщение об ошибке: Ошибка преобразования типа данных varchar в числовой.
Эта ошибка обычно означает, что в этом столбце должно быть значение, которое просто не может быть преобразовано в NUM - Пример: ‘Y’. За исключением того, что в этом случае нет ничего, кроме числовых значений, хотя БД не думает, что они есть.
Я сузил проблемные столбцы, выполняя CAST по одному столбцу за раз. Что странно, я могу ЗАКРЫТЬ проблемные столбцы в FLOAT, а затем в NUMERIC. Это может быть решением, но я обеспокоен использованием FLOAT с валютой, я не думаю, что FLOAT округляет число с цифрой, если у вас есть несколько десятичных знаков. Однако я могу ошибаться, и вполне нормально использовать FLOAT.
Просто для теста я попробовал INT, когда я пытаюсь CAST AS INT, я получаю более конкретную ошибку.
Ошибка преобразования при преобразовании значения varchar '1823.33' в тип данных int.
Поэтому, когда я запускаю следующий запрос, кажется, что все работает ...
SELECT
[Expended]
,CAST([Expended] AS FLOAT) AS Exp_FLOAT
,CAST(CAST([Expended] AS FLOAT) AS NUMERIC (18,4)) AS Exp_NUM
FROM [Stage].[BI_FACT_SPENDPLAN_C]
where [Expended] ='1823.33'
Expended Exp_FLOAT Exp_NUM
1823.33 1823.33 1823.3300
1823.33 1823.33 1823.3300
1823.33 1823.33 1823.3300
1823.33 1823.33 1823.3300
1823.33 1823.33 1823.3300
Полагаю, я спрашиваю: как вы думаете, мне следует CAST AS FLOAT, а затем CAST AS NUMERIC или в следующих 9 столбцах файла экспорта SPENDPLAN есть что-то существенное? Тогда возникает вопрос: если я «исправлю» эти столбцы с двойным CAST, может ли это произойти с другим столбцом и произойдет сбой при загрузке таблицы?
SELECT
[Expended]
,[Obligated]
,[Total_Expended]
,[Total_Obligated_FAMIS]
,[Spendplan_Balance]
,[Pending_Expenditures]
,[Unexpended_Balance]
,[Funds_Remaining_by_BBFY]
,[PY_Funds_Remaining]
FROM [Stage].[BI_FACT_SPENDPLAN_C]