如何选择两个数字范围之间的结果?

时间:2015-03-06 05:17:47

标签: php mysql sql database select

我需要根据列col1值选择结果。 col1,col2是文本字段类型。

 +-----+-----------+------+
 | id  |    col1   | col2 |
 +-----+-----------+------+
 | 1   | 1200-1220 | XXX  |
 +-----+-----------+------+
 | 2   | 1455-1460 | YYY  |
 +-----+-----------+------+

示例查询:

SELECT col2 FROM TABLE_NAME WHERE col1 = 1215

我想要的结果:

  

'XXX'

我如何得到上述结果。

如果我插错了,我需要插入一行来获取结果。

请告知。

2 个答案:

答案 0 :(得分:4)

这需要一些操作,但在MySQL中是可能的:

where 1215 between substring_index(col1, '-', 1) + 0 and substring_index(col1, '-', -1) + 0

也就是说,该字段被解析为第一个和最后一个值(然后转换为数字)。

答案 1 :(得分:1)

CREATE TABLE IF NOT EXISTS `test2` (
  `id` char(11) DEFAULT NULL,
  `col1` varchar(90) NOT NULL,
  `col2` varchar(90) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


INSERT INTO `test2` (`id`, `col1`, `col2`) VALUES
('1', '1200-1220', 'XXX'),
('2', '1455-1460', 'YYY');
  

查询:

SELECT col2 FROM test2 WHERE 1215 BETWEEN 
   CONVERT(SUBSTRING(col1, 1, LOCATE('-',col1) - 1),UNSIGNED INTEGER) AND
   CONVERT(SUBSTRING(col1, LOCATE('-',col1) + 1),UNSIGNED INTEGER)