У меня есть столбец, который в настоящее время установлен как nvarchar(max)
, и я хочу преобразовать столбец в decimal(38,2)
.Проблема, с которой я сталкиваюсь, состоит в том, что несколько миллионов строк имеют формат -1.943E12
, и из-за присутствия E
появляется ошибка Cannot convert nvarchar into numeric
, когда я пытаюсь преобразовать столбец в десятичное число.,Есть ли способ сделать это?
CREATE TABLE practice (cost nvarchar(max))
INSERT INTO practice values ('123'),('44232.99'),('43.4432'),('1.943E12')
SELECT CAST(cost as decimal(32,2)) FROM practice
В конечном итоге я пытаюсь вставить данные из промежуточной таблицы (где все столбцы nvarchar (max)) в таблицу с соответствующими типами данных.Я все время получал сообщение об ошибке, поэтому, покопавшись в каждом из 40 столбцов, я нашел 5 столбцов, в которых встречается эта научная запись.Любой совет, как сделать это в масштабе, не проверяя каждый столбец?
INSERT INTO practice_corrected_datatypes
SELECT * FROM practice