我的存储过程使用正则表达式作为参数来过滤一组行:
DECLARE @filter = '%'
SELECT * FROM TableA
where ColumnA like @filter
值'%'提取ColumnA的所有非空值。但是,我需要提取非null和null值。 使用第二个条件(且ColumnA为NULL)的想法不合适,因为过滤器应作为单个参数来提供。
最好找到是否有任何可以覆盖NULL值的正则表达式
答案 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的解决方案,而不是这种解决方案。