首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据经验进行过滤的sql查询

根据经验进行过滤的sql查询
EN

Stack Overflow用户
提问于 2013-02-25 18:51:12
回答 1查看 176关注 0票数 0

我有一张桌子

代码语言:javascript
复制
  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年的值

我想写一个查询,如果我在下拉列表中选择1-2年,将显示数据,它必须只显示那些具有1到2年经验的候选人

EN

回答 1

Stack Overflow用户

发布于 2013-02-26 17:29:03

通过如下方式设置映射来定义下拉列表值:

代码语言:javascript
复制
<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>

在查询中,检查OR分支中的每个值,如果值与所选的值匹配,请根据经验进行筛选:

代码语言:javascript
复制
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
    )

需要注意的几件事:

  • 您应该将它放在存储过程中或与参数一起内联执行它,不要将下拉列表中的选定值连接到查询中。一个快速的谷歌搜索,你应该知道如何参数化你的查询。
  • 根据你问题的参数,返回的值将会重叠。具有2年经验的候选人将同时出现在第一个和第二个结果集中,依此类推。您应该能够调整此条件,以防止在使用SELECT *进入生产环境时出现不需要的behavior.
  • Don't,并键入所有列名。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15065262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档