使用 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 +'%' )
or
和and
混合使用时添加( )
:
A AND B OR C
将 return C
完全独立于 A AND B
.
A AND (B OR C) will return
A AND Bor
A 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 +'%' )
可能效果更好(您需要根据自己的目的和结果对其进行调整
我想编写一个存储过程来过滤某些列,其中一些列可能为 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 +'%' )
or
和and
混合使用时添加( )
:
A AND B OR C
将 returnC
完全独立于A AND B
.A AND (B OR C) will return
A AND Bor
A 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 +'%' )
可能效果更好(您需要根据自己的目的和结果对其进行调整