Регулярное выражение для поиска значений, отличных от NULL и NULL - PullRequest
0 голосов
/ 26 июня 2019

Моя процедура хранения использует регулярное выражение в качестве параметра для фильтрации набора строк:

DECLARE @filter = '%'
SELECT * FROM TableA 
where ColumnA like @filter

Значение '%' извлекает все ненулевые значения ColumnA. Однако мне нужно извлечь как ненулевые, так и нулевые значения. Идея использования второго условия (а ColumnA равен NULL) не подходит, так как фильтр должен быть одним параметром.

Было бы замечательно найти какое-нибудь выражение регулярного выражения, которое может охватывать значения NULL

Ответы [ 2 ]

1 голос
/ 26 июня 2019

SQL Server не поддерживает Regex, только его собственный (более ограниченный) поиск по шаблону.

Обычно Я бы не рекомендовал этот ответ, так как у вас уже есть лидирующий подстановочный знак, производительность уже будет в окне.Предполагая, что вы хотите, чтобы '%' возвращал каждую строку, вы могли бы сделать:

DECLARE @Filter = '%';

SELECT *
FROM TableA
WHERE ISNULL(ColumnA,'|') LIKE @Filter;

Обратите внимание, однако, что если вы могли бы не использовать ведущие подстановочные знакиэто действительно плохая идея;это убьет производительность.Если это так, то используйте решение Лукаша, а не это.

1 голос
/ 26 июня 2019

Вы можете использовать OR условие:

DECLARE @filter = '%'
SELECT * FROM TableA 
where ColumnA like @filter OR @filter = '%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...