SQL查询,在一列上检查年份

时间:2017-07-27 08:17:59

标签: mysql sql

我的MySQL表中有一列显示年份。 例如:

Table: Information

ID | Year_sold
--- --------
1  | 2002-2010
2  | 2005-2015
3  | 2011-____
4  | 1975-1978

我会询问该表是否有特定年份的数据。 示例:

SELECT * FROM Information WHERE Year_sold = '2012';

这当然行不通,但如果结果应该是ID 2和3,我怎么能输入SQL查询。

如果该项目仍处于活动状态且已售出,则年份将显示为ID 3," 2011 -____"。我可以替换" ____"如果需要的话。

1 个答案:

答案 0 :(得分:3)

使用BETWEENLEFTSUBSTRING_INDEX功能。

SELECT ID, Year_sold
FROM Information
WHERE '2012' BETWEEN LEFT(Year_sold,4) AND SUBSTRING_INDEX(Year_sold,'-',-1)

输出

ID  Year_sold
2   2005-2015
3   2011-____

SQL小提琴:http://sqlfiddle.com/#!9/7df7b7/1/0

如果可能的话,我会重新开始你的表结构,并有类似的东西:

表:信息

ID | Year_sold_from | Year_sold_to
--- ------------------------------
1  | 2002           | 2010
2  | 2005           | 2015
3  | 2011           | null
4  | 1975           | 1978