根据条件使用不同列的SQL筛选器
我想根据条件筛选表。像-根据条件使用不同列的SQL筛选器,sql,sql-server,Sql,Sql Server,我想根据条件筛选表。像- CREATE TABLE [dbo].[tblUserInfo]( [Id] [int] NOT NULL, [TypeName] [int] NOT NULL, [Value] [decimal](18, 2) NULL, [Name] [nvarchar](250) NULL, ) DECLARE @SearchText VARCHAR(250)='aa' SELECT *FROM tblUserInfo @Sear
CREATE TABLE [dbo].[tblUserInfo](
[Id] [int] NOT NULL,
[TypeName] [int] NOT NULL,
[Value] [decimal](18, 2) NULL,
[Name] [nvarchar](250) NULL,
)
DECLARE @SearchText VARCHAR(250)='aa'
SELECT *FROM tblUserInfo
@SearchText具有文本,然后按TypeName列筛选,
@SearchText为空,然后按名称列筛选
举个例子
我怎样才能做到这一点?提前谢谢
DECLARE @SearchText VARCHAR(250)='aa'
SELECT *FROM tblUserInfo
WHERE CASE WHEN @SearchText IS NULL THEN Name ELSE 'a' END = CASE WHEN @SearchText IS NULL THEN 'hehe' ELSE 'a' END
AND
(
CASE WHEN @SearchText IS NOT NULL THEN TypeName ELSE 1 END = CASE WHEN @SearchText IS NOT NULL THEN 2 ELSE 1 END
OR
CASE WHEN @SearchText IS NOT NULL THEN TypeName ELSE 1 END = CASE WHEN @SearchText IS NOT NULL THEN 3 ELSE 1 END
)
我试过了,有没有更好的办法
我试过这样做,有没有更好的解决方案?您的where子句应该如下所示:
where (@SearchText is null and Name = '.....') --filter by Name
or (@SearchText is not null and TypeName = '.....') --filter by TypeName
where子句应如下所示:
where (@SearchText is null and Name = '.....') --filter by Name
or (@SearchText is not null and TypeName = '.....') --filter by TypeName
@SearchText为空,然后按名称过滤
,你要过滤的是名称
?谢谢,我从@MichałTurczyn的答案中得到了解决方案。@SearchText为空,然后按名称过滤
,你要过滤的是名称
?谢谢,我从@MichałTurczyn的答案中得到了解决方案。