Проще говоря, если ID_NUMBER равен NULL в строке, которую вы пытаетесь получить, вы не сможете получить эту строку, если вы укажете ID_NUMBER = ID_NUMBER
в своем запросе.Причина этого заключается в том, что в реляционной базе данных NULL не будет сравниваться как «равный» какому-либо значению, включая NULL.Таким образом, если ID_NUMBER равен NULL, тест ID_NUMBER = ID_NUMBER
совпадает с NULL = NULL
, и это никогда не вернет TRUE.Любое сравнение, где присутствует NULL по обе стороны от сравнения, возвращает NULL.Вот как это работает.
РЕДАКТИРОВАТЬ
Один из возможных путей решения этой проблемы - переписать запрос следующим образом:
Select *
from pat_info
Where (id_number = id_number OR
ID_NUMBER IS NULL) and
first_name = 'adam'
Таким образом, требование использовать ID_NUMBER = ID_NUMBER
взапрос удовлетворен, по крайней мере, на мой взгляд.
Спасибо, @TimBiegeleisen.: -)