首页 > 解决方案 > 怎么修?消息 515,级别 16,状态 2,行 2 无法将值 NULL 插入列,列不允许空值。插入失败

问题描述

我在 SQL Server 中工作。

我正在尝试stagingdata使用另一个 ( ) 中的列中的数据加载一个新表 ( uploadfile)。临时表的列不允许空值。

我试过这段代码:

INSERT INTO [x].[stagingdata](DepartmentCode, CourseHours, CourseCredits, CourseDescription)
    SELECT
        SUBSTRING([Course (hr, crd)], 1, CHARINDEX(' ', [Course (hr, crd)])) AS DeptCode,
        (SUBSTRING([Course (hr, crd)], CHARINDEX('(',[Course (hr, crd)]) + 1, 
         LEN(CHARINDEX(',', [Course (hr, crd)]) - CHARINDEX('(', [Course (hr, crd)]) - 1))) AS CourseHours,
        (SUBSTRING([Course (hr, crd)], CHARINDEX(',',[Course (hr, crd)]) + 1, 
         LEN(CHARINDEX(',', [Course (hr, crd)]) - CHARINDEX(')', [Course (hr, crd)]) - 1))) AS CourseCredits,
        [Description]
    FROM
        [x].[Uploadfile]

如何在不出现此错误的情况下将数据加载到列中?

我努力了:

insert into..
    select..
    from...
    where columnname is not null

但它不起作用。

有什么建议么?谢谢!

我也在 MAC OS 上使用 Azure DataStudio。

标签: sqlsql-servertsqlsql-insert

解决方案


select 
ISNULL(substring([Course (hr, crd)], 1, charindex(' ', [Course (hr, crd)])),'') as DeptCode,
ISNULL(SUBSTRING([Course (hr, crd)], CHARINDEX('(',[Course (hr, crd)]) + 1, len(CHARINDEX(',', [Course (hr, crd)]) - CHARINDEX('(', [Course (hr, crd)]) - 1))),'')  AS CourseHours,
ISNULL(SUBSTRING([Course (hr, crd)], CHARINDEX(',',[Course (hr, crd)]) + 1, len(CHARINDEX(',', [Course (hr, crd)]) - CHARINDEX(')', [Course (hr, crd)]) - 1))),'')  AS CourseCredits,
ISNULL([Description],'') 

推荐阅读