如何从SQLquery中包含范围的列查询数据

时间:2016-12-11 02:16:25

标签: php mysql sql

我有一个名为scholars_表的表,其中一个列的名称为validity,其中包含如下数据:

2016-2019 
2016-2020 
2016-2017 
2018-2019 

我想要达到的目的是让scholarID列在$validity栏中的validity。{/ p>

例如,变量为$year=2017,我只想选择scholarIDs validity 2017的{​​{1}}。输出应该是这样的:

2016-2019
2016-2020 
2016-2017

这样的事,谢谢

3 个答案:

答案 0 :(得分:0)

首先,这是存储数据的真正坏方法。您的scholars表格应该只有year_fromyear_to列。

但是,有时我们会被其他人的错误决定所困扰。您可以使用MySQL中的substring_index()处理此问题:

where $year between substring_index(range, '-', 1) + 0 and substring_index(range, '-', -1) + 0

+ 0只是将每个值转换为数字。

答案 1 :(得分:0)

不要存储这样的数据。理想情况下,应该有两列validity startValidity end

有效期开始应具有所有有效期起始年度,有效期结束应具有所有有效期结束年份。

然后查询将简单为

Select * from scholars_
Where 2017 between validity_start and validity_end

答案 2 :(得分:0)

SELECT scholarID FROM scholars_ WHERE $data BETWEEN SUBSTRING_INDEX(SUBSTR(validity,1,4), '-', 1) + 0 AND SUBSTRING_INDEX(SUBSTR(validity,6,9), '-', -1) + 0

$data = 2015 or something