Совместимость типов данных: int vs. nvarchar - PullRequest
0 голосов
/ 24 апреля 2019

Я использую приведенный ниже оператор SQL для чтения и импорта данных из электронной таблицы Excel в таблицу базы данных:

INSERT INTO [dbo].[TestTable] ([ColumnA], [ColumnB], [ColumnC], [ColumnD])
SELECT A.[AAA], A.[BBB], A.[CCC], A.[DDD] FROM OPENROWSET 
('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\Temp\TestFile\01-TestFile.xlsx;HDR=YES', 'select * from [Sheet$]') AS A;

TestTable имеет четыре столбца, принимающих только целочисленные типы данных. Импорт хорошо работает с числами в электронной таблице базы данных. Однако, если по какой-то причине в файле есть ошибка (т. Е. Вместо цифр есть текст), он завершается ошибкой, и я получаю ошибку, преобразующую nvarchar в тип данных int. Есть ли способ убедиться, что загрузка все еще работает - этот текст пропущен и отображается в таблице как NULL?

1 Ответ

2 голосов
/ 24 апреля 2019

Попробуйте TRY_CAST, как показано ниже.Работает на SQL Server 2012+.

SELECT TRY_CAST('TEST' AS INT)

Подробнее о TRY_CAST (Transact-SQL)

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