@myvar 是一个 nvarchar(30)。如何在不使用 OR 的情况下进行以下评估?
@myvar = '' OR (table1.col1 like @myvar)
还有其他更有效的方法吗?
@myvar 是一个 nvarchar(30)。如何在不使用 OR 的情况下进行以下评估?
@myvar = '' OR (table1.col1 like @myvar)
还有其他更有效的方法吗?
如果有一个面试问题在哪里OR
被禁止并且德摩根的法律被遗忘了,那么人们可以使用:
case
when @myvar = '' then 42
when table1.col1 like @myvar then 666
else 0 end > 0
也可以尝试使用Len( @myvar ) = 0
.
怎么样:
(table1.col1 like ISNULL(@myvar,table1.col1))
table1.col1 like ISNULL(NULLIF(@myvar, ''), table1.col1)
还有其他的方法,其实还有很多。但是,如果您添加 OPTION (RECOMPILE),则您所拥有的表单对于 SQL Server 2005 及更高版本的大多数版本都表现最佳。
在此处查找有关使用动态条件进行搜索的权威指南。按照您的 SQL Server 版本的链接。