所以这是我的问题我需要在2000 - 2008年间选择记录,但我需要搜索的列是varchar示例:
IntRecordID VARCHARYear
1 1990-2000
2 2001-2005
3 2005-2006
4 2007-2008
5 2009-2020
选择2000到2008之间具有VARCHARYear的所有记录ID
IntRecordID
2
3
4
我需要实现的SQL查询是什么?
答案 0 :(得分:0)
你的sql会是这样的......
SELECT column_name
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
答案 1 :(得分:0)
希望您的VARCHARYear
字段始终为YYYY-YYYY
格式。
SELECT *
FROM table_name
WHERE LEFT(VARCHARYear,4) > 2000
AND RIGHT(VARCHARYear,4) <= 2008
答案 2 :(得分:0)
使用此查询:
SELECT column_name
FROM table_name
WHERE LEFT(column_name, 4) >= value1 AND RIGHT(column_name, 4) <= value2
我建议您最好在今年添加另外两列,并将您的年份分开,然后说出&#34; year_from&#34;和&#34; year_to&#34;并将此列year
设为数据类型。
答案 3 :(得分:0)
请尝试以下查询:
在这里,我尝试使用SUBSTRING和CHARINDEX函数来隔离年份,因为您想在 VARCHARYear 列上使用BETWEEN子句。
例如:SUBSTRING(VARCHARYear,1,(CHARINDEX('-', VARCHARYear)-1))
然后我尝试通过 UNION 收集相同列的同一年的 IntRecordID 数据/行(例如:1990-200)。
例如:
SELECT IntRecordID
,SUBSTRING(VARCHARYear,1,(CHARINDEX('-', VARCHARYear)-1)) AS VARCHARYear
FROM TABLE1
UNION
SELECT IntRecordID
,SUBSTRING(VARCHARYear,(CHARINDEX('-', VARCHARYear)+1),len(VARCHARYear)) AS VARCHARYear
FROM TABLE1
最后,我使用 DISTINCT 一次获取重复的 IntRecordID 数据。
希望对你有所帮助:
SELECT DISTINCT IntRecordID
FROM
(
SELECT IntRecordID
,SUBSTRING(VARCHARYear,1,(CHARINDEX('-', VARCHARYear)-1)) AS VARCHARYear
FROM TABLE1
UNION
SELECT IntRecordID
,SUBSTRING(VARCHARYear,(CHARINDEX('-', VARCHARYear)+1),len(VARCHARYear)) AS VARCHARYear
FROM TABLE1
)T
WHERE CONVERT(INT,T.VARCHARYear) BETWEEN 2001 AND 2008