如何解决?消息515,级别16,状态2,第2行无法将值NULL插入列,列不允许为空。 INSERT失败

问题描述 投票:0回答:1

我正在使用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。

sql sql-server tsql sql-insert
1个回答
0
投票
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],'') 
© www.soinside.com 2019 - 2024. All rights reserved.