在同一语句中使用Like和Between的SQL查询

时间:2017-12-06 05:07:54

标签: php sql

所以这是我的问题我需要在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查询是什么?

4 个答案:

答案 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)

请尝试以下查询:
在这里,我尝试使用SUBSTRINGCHARINDEX函数来隔离年份,因为您想在 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