加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 如何创建可选择搜索列的存储过程?

发布时间:2020-12-12 08:49:05 所属栏目:MsSql教程 来源:网络整理
导读:我正在研究将要查询我们员工数据库的工作申请.最终用户希望能够根据标准名称/部门标准进行搜索,但他们也希望灵活地查询在卫生部门工作的名为“James”的所有人.我想避免的一件事是简单地使存储过程获取参数列表并生成一个SQL语句来执行,因为这将打开内部级别
我正在研究将要查询我们员工数据库的工作申请.最终用户希望能够根据标准名称/部门标准进行搜索,但他们也希望灵活地查询在卫生部门工作的名为“James”的所有人.我想避免的一件事是简单地使存储过程获取参数列表并生成一个SQL语句来执行,因为这将打开内部级别的SQL注入门.

这可以做吗

解决方法

虽然COALESCE的技巧很整洁,但我的首选方法是:
CREATE PROCEDURE ps_Customers_SELECT_NameCityCountry
    @Cus_Name varchar(30) = NULL,@Cus_City varchar(30) = NULL,@Cus_Country varchar(30) = NULL,@Dept_ID int = NULL,@Dept_ID_partial varchar(10) = NULL
AS
SELECT Cus_Name,Cus_City,Cus_Country,Dept_ID
FROM Customers
WHERE (@Cus_Name IS NULL OR Cus_Name LIKE '%' + @Cus_Name + '%')
      AND (@Cus_City IS NULL OR Cus_City LIKE '%' + @Cus_City + '%')
      AND (@Cus_Country IS NULL OR Cus_Country LIKE '%' + @Cus_Country + '%')
      AND (@Dept_ID IS NULL OR Dept_ID = @DeptID)
      AND (@Dept_ID_partial IS NULL OR CONVERT(varchar,Dept_ID) LIKE '%' + @Dept_ID_partial + '%')

这些类型的SP可以轻松地生成代码(并重新生成表格更改).

您有几个处理数字的选项,这取决于您是否需要准确的语义或搜索语义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读