В SQL Server можно ли сравнивать нулевые значения во внешнем ключе в одной таблице и уникальном ключе в другой таблице? - PullRequest
0 голосов
/ 28 февраля 2019

Внешний ключ и Уникальный ключ могут иметь правильные значения NULL. Предположим, что FK в таблице 1 ссылается на UK в таблице 2, можем ли мы сравнить NULL = NULL, или такие сопоставления будут пропущены?Уникальный ключ может принимать значение 1 NULL, поэтому возникает вопрос.

Добавление примера, как показано ниже

PassportNumber имеет значение ForeignKey в PersonTable и уникальный ключ в таблице Passenger.Если мы присоединяемся к приведенным ниже таблицам на основе PassportNumber, запись вступит в соединение или будет пропущена.

Персона
Идентификационное имя passportNumber
1 John NULL
2 Anil J01234567

Пассажирский

Идентификатор VehicleNumber passportNumber
1 US 7C 0987 NULL
2 UK 8C 0698 J01234567

1 Ответ

0 голосов
/ 28 февраля 2019

Значения NULL будут пропущены.Если вы хотите, чтобы NULL s соответствовало, вам нужна явная логика:

on (t1.col = t2.col) or (t1.col is null and t2.col is null)

Предупреждение: or может убить производительность.

Стандартный SQL имеет оператор сравнения is not distinct from"NULL-safe" - означает NULL = NULL.SQL Server не поддерживает такой оператор.

...