2014-09-11 2 views
1

У меня есть поле в моей базе данных, которое может содержать любое число, например. 8.00 или номер диапазона, например. 8.00 - 10.00.MySQL - MIN/MAX

Мне нужно получить MIN() и MAX() из таблицы, если вы берете каждое число как отдельный номер. например когда диапазон 8,00 - 10,00 МИН 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

пожалуйста, добавьте некоторые примеры данных и ожидаемый Resultset – KrazzyNefarious

+0

обновил сообщение –

+0

следует, чтобы MAX был 10.00? –

ответ

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 

Demo

+0

Бог только что съел котенка, когда этот ответ был опубликован. Тот факт, что он * возможен * несмотря на полностью сломанную модель данных, с безнадежно ненадежным и плохим запросом, не означает, что вы должны поощрять ТС продолжать свой бродячий путь. –

0

Вы должны normalize your database к 3NF или НФБК для того, чтобы избежать дальнейших проблем. Но если вы просто хотите знать, что в вашей базе данных, вы можете попробовать этот запрос:

запрос

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 | 
+-------+-------+ 
Смежные вопросы