Sql server 根据经验对FilteringA进行sql查询
我有这张桌子Sql server 根据经验对FilteringA进行sql查询,sql-server,tsql,sorting,Sql Server,Tsql,Sorting,我有这张桌子 CREATE TABLE [dbo].[HRCandidateProject]( [ProjectId] [bigint] IDENTITY(1,1) NOT NULL, [orgid] [int] NULL, [uid] [int] NULL, [CandidateId] [bigint] NULL, [FirstName] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [LastName] [varchar
CREATE TABLE [dbo].[HRCandidateProject](
[ProjectId] [bigint] IDENTITY(1,1) NOT NULL,
[orgid] [int] NULL,
[uid] [int] NULL,
[CandidateId] [bigint] NULL,
[FirstName] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[LastName] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ProjectName] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[FromDate] [datetime] NULL,
[ToDate] [datetime] NULL,
[SkillSet] [varchar](250) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Role] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Client] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ProjectDiscription] [varchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[TotalExperience][int]
CONSTRAINT [PK_HRCandidateProject] PRIMARY KEY CLUSTERED
(
[ProjectId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
在下拉列表中,我有1-2年、2-4年、4-7年、7年以上的总经验值
我想写一个查询,如果我在dropdownlist中选择1-2年,它将显示数据。它必须只显示那些有1-2年经验的候选人。通过设置地图定义下拉列表值:
<asp:DropDownList ID="Experience" runat="server">
<asp:ListItem Value="1">1-2 Years</asp:ListItem>
<asp:ListItem Value="2">2-4 Years</asp:ListItem>
<asp:ListItem Value="3">4-7 Years</asp:ListItem>
<asp:ListItem Value="4">More than 7 Years</asp:ListItem>
</asp:DropDownList>
有几件事需要注意:
- 您应该将其放入存储过程或与参数内联执行,不要将下拉列表中的选定值连接到查询中。一个快速的谷歌搜索,你应该找到如何参数化你的查询
- 根据问题的参数,返回的值将重叠。有2年经验的候选人将出现在第一个和第二个结果集中,等等。如果这是一个不希望出现的行为,你应该能够调整此标准以防止出现这种情况
- 不要使用SELECT*进入生产,请键入所有列名
SELECT *
FROM HRCandidateProject
WHERE
(
@SelectedExperience = 1
AND TotalExperience BETWEEN 1 AND 2
)
OR (
@SelectedExperience = 2
AND TotalExperience BETWEEN 2 AND 4
)
OR (
@SelectedExperience = 3
AND TotalExperience BETWEEN 4 AND 7
)
OR (
@SelectedExperience = 4
AND TotalExperience > 7
)