Получить строку из таблицы на основе параметра

Я хочу получить строку из значения параметра. Либо это может быть значение «ABC» или NULL. Ниже приведена исходная таблица и ожидаемый результат, который я пытаюсь достичь.

SourceTable

column1 column2 -------------------------- value1 NULL value2 ABC 

Пробовал с запросом, но он получает две строки со значениями1 и значением2.

 Declare @Param1 varchar(20) = 'ABC' Select * from SourceTable where column2 = @Param1 Or column2 is NULL 

Если значение – «ABC», тогда Result

 column1 column2 -------------------------- value2 ABC 

Если значение равно NULL, тогда Result

 column1 column2 -------------------------- value1 NULL 

Вы можете попробовать что-то вроде: Только проблема, с которой вы могли столкнуться, заключается в том, что в вашем столбце2 есть пробелы.

 SELECT * FROM SourceTable WHERE ISNULL(column2, '') = ISNULL(@Param1, '') 

Возможно, это сработает для вас?

 select * from SourceTable where column2 = @Param1 or (@Param1 is null and column2 is null) 

Возможно, вам нужен union all и проверка на существование:

 Select * from SourceTable where column2 = @Param1 union all Select * from SourceTable where column2 is null and not exists (select 1 from sourcetable st2 where st2.column2 = @Param1); 

Альтернатива использует порядок: если вы хотите только одну строку:

 select top 1 st.* from sourcetable st where column2 = @param1 or column2 is null order by (case when column2 is not null then 1 else 2 end); 
Давайте будем гением компьютера.