我有一个名为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
这样的事,谢谢
答案 0 :(得分:0)
首先,这是存储数据的真正坏方法。您的scholars
表格应该只有year_from
和year_to
列。
但是,有时我们会被其他人的错误决定所困扰。您可以使用MySQL中的substring_index()
处理此问题:
where $year between substring_index(range, '-', 1) + 0 and substring_index(range, '-', -1) + 0
+ 0
只是将每个值转换为数字。
答案 1 :(得分:0)
不要存储这样的数据。理想情况下,应该有两列validity start
和Validity 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