«Невозможно вставить значение NULL», но нет значений NULL! [закрыто]

Этот вопрос следует за ответом моего другого вопроса: Вставка с помощью OUTPUT коррелирует с таблицей подсетей

Столбец Person.LastName имеет ограничение NOT NULL. Когда я выполняю этот код:

CREATE TABLE tempIDs
( PersonId INT, 
  FinancialInstitutionId INT
);

MERGE INTO Person 
USING FinancialInstitution AS fi
  ON 1 = 0
WHEN NOT MATCHED THEN
  INSERT (CreationDate, AdministrativeStatus, LastName, Street1, Number1, City1, State1, PostCode1, CountryId1, WorkDirectPhone1, Fax1, Email1)
  VALUES (GetDate(), 'Legal', fi.Name, fi.Street, fi.Number, fi.City, fi.[State], fi.PostCode, fi.CountryId, fi.PhoneNumber, fi.Fax, fi.Email)
OUTPUT inserted.Id, fi.Id INTO tempIDs;

UPDATE fi
SET fi.PersonId = t.PersonId
FROM FinancialInstitution AS fi
  JOIN tempIDs AS t
    ON fi.Id = t.FinancialInstitutionId ;

Я получаю следующую ошибку:

Cannot insert the value NULL into column 'LastName', table 'Person'; column does not allow nulls. UPDATE fails.

Дело в том, что нет значения FinancialInstitution.Name, которое равно NULL.

SELECT Name FROM FinancialInstitution WHERE Name = NULL

Это не возвращает строку. Кроме того, если я заменю значение fi.Name значением («A Last Name»), запрос будет выполнен.

6 голосов | спросил Yugo Amaryl 11 PMpFri, 11 Apr 2014 12:42:11 +040042Friday 2014, 12:42:11

1 ответ


12

NULL не является значением. Что-то не может '=' NULL

Вы хотите:

SELECT Name FROM FinancialInstitution WHERE Name IS NULL
ответил Mark Sinkinson 11 PMpFri, 11 Apr 2014 12:45:18 +040045Friday 2014, 12:45:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132