Мне нужно импортировать данные в SQL из Excel через пользовательское приложение .NET. Мне нужно избегать дублирования. Однако некоторые записи могут иметь значения NULL в определенных столбцах.
Я использую хранимые процедуры для реализации импорта, но я не могу предоставить "универсальное" решение, которое проверяет соответствие данных, если они существуют, или NULLS, если данные не завершаются.
Обратите внимание, что моя таблица деталей использует Identity PK, но записи импорта не будут включать его.
Ниже приведен пример (я не включил все столбцы для краткости):
CREATE PROCEDURE [dbo].[spInsertPart]
(@PartNo NCHAR(50),
@PartName NCHAR(50) = NULL,
@PartVariance NCHAR(30) = NULL)
AS
BEGIN
SET NOCOUNT OFF;
IF NOT EXISTS (SELECT PartNo, PartVariance
FROM Part
WHERE PartNo = @PartNo AND PartVariance = @PartVariance)
BEGIN
INSERT INTO Part (PartNo, PartName, PartVariance)
VALUES (@PartNo, @PartName, @PartVariance
END
END
Данные импорта могут включать или не включать PartVariance, а существующие записи могут (или не могут) также иметь значение NULL в качестве PartVariance.
Если оба значения равны NULL, то я получаю дубликат записи, который мне не нужен.
Как я могу переписать процедуру, чтобы не дублировать ее, а обрабатывать значение NULL как любое другое значение? (То есть добавить запись, если любой из них содержит NULL, но не оба).