用于查找非null和NULL值的正则表达式

时间:2019-06-26 11:08:51

标签: sql-server regex tsql

我的存储过程使用正则表达式作为参数来过滤一组行:

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

值'%'提取ColumnA的所有非空值。但是,我需要提取非null和null值。 使用第二个条件(且ColumnA为NULL)的想法不合适,因为过滤器应作为单个参数来提供。

最好找到是否有任何可以覆盖NULL值的正则表达式

2 个答案:

答案 0 :(得分:1)

您可以使用OR条件:

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

答案 1 :(得分:1)

SQL Server不支持正则表达式,只是它自己的(更受限制的)模式匹配。

通常我不推荐这个答案,但是,由于您已经拥有领先的通配符,因此性能将超出预期。假设您希望'%'返回每一行,您可以这样做:

DECLARE @Filter = '%';

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

但是请注意,如果您可能不使用前导通配符,则这是一个非常糟糕的主意;会降低性能。如果是这样,请使用Lukasz的解决方案,而不是这种解决方案。