Как исправить? Msg 515, уровень 16, состояние 2, строка 2 Невозможно вставить значение NULL в столбец, столбец не допускает пустых значений. INSERT не работает - PullRequest
0 голосов
/ 08 мая 2020

Я работаю на SQL сервере.

Я пытаюсь загрузить новую таблицу (stagingdata) с данными из столбцов другого (uploadfile). Столбцы промежуточной таблицы не допускают значений NULL.

Я пробовал этот код:

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

, но это не работает.

Есть предложения? Спасибо!

Также я использую Azure DataStudio на ОС MA C.

1 Ответ

0 голосов
/ 08 мая 2020
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],'') 
...