【发布时间】:2014-04-28 11:22:27
【问题描述】:
我们在这样的表上实现搜索
create proc prcSearchMember
(
@UserId uniqueidentifier,
@MemberFirstName varchar(20),
@MemberMiddleName varchar(20),
@MemberLastName varchar(20),
@FamilyHeadName varchar(50),
@FatherName varchar(50),
@MotherName varchar(50),
@DOB datetime,
@GotraID int,
@SectID int,
@BloodGroupID int,
@EducationLevelID int,
@EducationFieldID int,
@HouseNumber varchar(20),
@StreetName varchar(50),
@Area varchar(50),
@LandMark varchar(50),
@StateID int,
@CountryID int,
@CityID int,
@PhoneNumber varchar(15),
@EmailAddress varchar(50),
@MaritalStatus varchar(20),
@OccupationTypeID int,
@Gender varchar(10),
@IsSubmit bit
)
as
if(@MemberFirstName is not null )
Begin
Select MemberFirstName,UserId from MemberInfo
where MemberFirstName like @MemberFirstName
end
else if (@MemberMiddleName is not null )
Begin
Select MemberFirstName,UserId from MemberInfo
where MemberMiddleName like @MemberMiddleName
end
else if (@MemberMiddleName is not null )
Begin
Select MemberFirstName,UserId from MemberInfo where MemberLastName like @MemberLastName
end
else if (@MemberLastName is not null )
Begin
Select MemberFirstName,UserId from MemberInfo where FamilyHeadName like @MemberLastName
end
else if (@MemberLastName is not null )
Begin
Select MemberFirstName,UserId from MemberInfo where FatherName like @FatherName
end
else if (@MemberLastName is not null )
Begin
Select MemberFirstName,UserId from MemberInfo where MotherName like @MotherName
end
else if (@DOB is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where DOB like @DOB
end
else if (@GotraID is not null )
Begin
Select MemberFirstName,UserId from MemberInfo where GotraID like @GotraID
end
else if (@SectID is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where SectID=@SectID
end
else if (@BloodGroupID is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where BloodGroupID like @BloodGroupID
end
else if (@EducationLevelID is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where EducationLevelID=@EducationLevelID
end
else if (@EducationFieldID is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where EducationFieldID like EducationFieldID
end
else if (@HouseNumber is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where HouseNumber like @HouseNumber
end
else if (@StreetName is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where StreetName like @StreetName
end
else if (@Area is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where Area like @Area
end
else if (@LandMark is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where LandMark like @LandMark
end
else if (@CountryID is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where CountryID like @CountryID
end
else if (@StateID is not null )
Begin
select MemberFirstName,UserId from MemberInfo where StateID like @StateID
end
else if (@CityID is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where CityID like CityID
end
else if (@OccupationTypeID is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where OccupationTypeID like @OccupationTypeID
end
else if (@PhoneNumber is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where PhoneNumber like @PhoneNumber
end
else if (@EmailAddress is not null )
Begin
Select MemberFirstName,UserId from MemberInfo where EmailAddress like @EmailAddress
end
else if (@MaritalStatus is not null )
Begin
Select MemberFirstName,UserId from MemberInfo where MaritalStatus like @MaritalStatus
end
else if (@Gender is not null )
Begin
Select MemberFirstName,UserId from MemberInfo where Gender like @Gender
end
else if (@UserId is not null ) Begin
Select MemberFirstName,UserId from MemberInfo where UserId like @UserId
这些都是单表的列
所以如果有什么方法可以这样实现搜索查询
foreach (column_name in INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'YourTableName')
select primary_key_coumn
from table_name
where column_name like @column_name
其中@column_name 是特定column 的值
【问题讨论】:
-
这是什么意思。如果除 Gender 之外的所有内容都为 null,并且您传入 Male,您是否只想获取 X 多行,所有行都包含文本 Male?这就是这里的输出。
-
抱歉查询错误我已经编辑了@Paddy
-
是否要在所有表中搜索列和值(如column = value)?
-
是否有机会尝试一次过滤多个列?
-
@Bharadwaj 是的
标签: sql sql-server-2008 search