MySQL - MIN / MAX

时间:2014-09-11 15:10:55

标签: mysql mysqli

我的数据库中有一个字段,其中可以包含一个数字,例如8.00或范围编号,例如8.00 - 10.00。

如果你把每个数字作为一个单独的数字,我需要从表中得到MIN()和MAX()。例如当范围是8.00-10.00时,MIN是8.00,MAX是10.00

示例:

PRICE: 2.00-4.00
PRICE: 2.00-10.00
PRICE: 3.00
PRICE: 8.00

MIN = 2.00
MAX = 10.00

任何人都可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:1)

您可以使用substring_indexunion

select min(col),
max(col) 
from (
select 
substring_index(PRICE,'-',1) * 1 col
 from Table1
union 
select 
substring_index(PRICE,'-',-1) * 1 col2
from Table1
  ) t

Demo

答案 1 :(得分:0)

您应该normalize your database到3NF或BCNF以避免进一步的问题。但如果您只是对数据库中的内容感到好奇,可以尝试这个查询:

查询

SELECT
  MIN(TRIM(CASE WHEN INSTR(val, "-") > 0 THEN SUBSTRING(val, 1, INSTR(val, "-")-1) ELSE val END)) min,
  MAX(TRIM(CASE WHEN INSTR(val, "-") > 0 THEN SUBSTRING(val,    INSTR(val, "-")+1) ELSE val END)) max
FROM test;

示例输出

+-------+-------+
| min   | max   |
+-------+-------+
| 1.00  | 30.00 |
+-------+-------+