我的数据库中有一个字段,其中可以包含一个数字,例如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
任何人都可以帮忙吗?
由于
答案 0 :(得分:1)
您可以使用substring_index
和union
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
答案 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 |
+-------+-------+