数据类型兼容性:int vs. nvarchar

时间:2019-04-24 09:21:54

标签: sql sql-server

我正在使用下面的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 个答案:

答案 0 :(得分:2)

尝试如下所示的TRY_CAST。适用于SQL Server 2012+。

SELECT TRY_CAST('TEST' AS INT)

有关TRY_CAST (Transact-SQL)的更多信息