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

前端之家收集整理的这篇文章主要介绍了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可以轻松地生成代码(并重新生成表格更改).

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

猜你在找的MsSQL相关文章