使用 ltrim 和 itrim

use ltrim and itrim

我想编写一个存储过程来过滤某些列,其中一些列可能为 NULL,也可能不是。下面的代码是我的,但它不起作用。

 procedure .[s p_organization](@expert nvarchar(100), 
  @name nvarchar(100), @last_name nvarchar(200), 
  @organization n varchar(200) )




where 
  ((Person.expert LIKE @expert or  Person.expert LIKE @expert) 
  and (is null(l trim(r trim @last_name)),'')='' 
  or person.last_name like @last_name + '%' 
  and  Person.Name LIKE @name 
  or @name is null 
  and Organization.Name LIKE N'%'+@organization +'%' )

orand混合使用时添加( )

  • A AND B OR C 将 return C 完全独立于 A AND B.
  • A AND (B OR C) will returnA AND BorA AND C`(取决于数据内容

你的情况:

  ((Person.expert LIKE @expert or  Person.expert LIKE @expert) 
  and ((is null(l trim(r trim @last_name)),")=" 
  or person.last_name like @last_name + '%')
  and  (Person.Name LIKE @name 
  or @name is null )
  and Organization.Name LIKE N'%'+@organization +'%' )

可能效果更好(您需要根据自己的目的和结果对其进行调整