当为搜索数据库中的String列提供范围时,如何从DB生成get结果?

时间:2014-08-29 09:25:43

标签: mysql sql

我要求从包含列的数据库中获取数据如下:

id int(11) PK 
quarter varchar(45) 
year int(11)

Quarter可以将每年的季度值作为String e.x. Q1Q2Q3Q4。 从2011年到2014年,年份可以获得价值。

要求:

  • 用户将输入范围,即季度为Q1和Q3
  • 用户将在2011年和2013年的年度范围内。

我们必须在2011,2012和2013年返回Q1,Q2,Q3和Year的季度数据并忽略其他数据。同样,用户可以输入任何范围。

请帮助建议如何构建通用SQL查询以获取结果集?

2 个答案:

答案 0 :(得分:0)

SELECT * FROM YOURTABLE
WHERE CONCAT(CAST(YEAR AS VARCHAR), QUARTER) IN (:QuarterList)

然后以“2014Q1”,“2014Q2”......

的形式提供参数列表

答案 1 :(得分:0)

由于季度的字母顺序与按时间顺序的顺序一致,您不妨使用:

SELECT *
来自你的表格 在四分之一的范围内:Q来自AND:Qto
  AND year BETWEEN:Y from AND:Yto

其中Qfrom,Qto,Yfrom和Yto是用户提供的参数