首页 > 解决方案 > 通过多个选择/下拉列表过滤我的结果,每个选择/下拉列表将接受多个值

问题描述

我有多个下拉菜单

  1. 特希尔

All 可以选择多个值,默认情况下全选。

现在我想编写一个高效的 SQL 查询来完成工作。我正在考虑使用where col in ()语句,但是当我没有传递任何值时,它会导致错误。

什么是完成给定结果的更好方法。

需要更新以获取更多信息

我正在开发一个仪表板,其中我的图表需要对选择多种功能的多个下拉列表(过滤器)进行反应,并且我假设where col in ()子句可以支持我。唯一的问题是在使用此子句时,它不能为空,因为在未应用过滤器时无法从 SQL 服务器获取数据。

标签: sqlsql-serverrestknex.js

解决方案


我通过阅读这篇文章arrays-in-sql找到了解决方案

eg: 省 = [1,2,3], 地区 = [1,2,3] 首先将省和地区转换为像省 = '1,2,3' 这样的字符串创建过程,参数如下

CREATE PROC myFilterTable ( @province AS VARCHAR ( 50 ) = NULL,@district AS VARCHAR ( 50 ) = NULL ) AS BEGIN SELECT * FROM myTable WHERE ( @province IS NULL OR province_id IN ( SELECT CONVERT ( INT, VALUE ) FROM string_split ( @province, ',' ) ) ) AND ( @district IS NULL OR district_id IN ( SELECT CONVERT ( INT, VALUE ) FROM string_split ( @district, ',' ) ) ) END

现在执行: exec myFilter '1,2', '1,3'


推荐阅读