Я хочу получить максимальное значение из одного столбца таблицы, предположим, что максимальное значение равно 1002, поэтому запрос будет таким.

1000
1001
1002

            SELECT max(column1 ) as max_page FROM abc; 

    output will be 1002 as highest value but if column data contain string with this valuefor example 

    XYZ1000
    XYZ1001
    XYZ1002


    in this case it is not working of max(column) way so  how to separate string and get maximum value .
1
MSP 15 Мар 2018 в 12:35

1 ответ

Лучший ответ

Один из способов справиться с вашей проблемой, состоит в том, чтобы определить функцию столбца, которая возвращает только цифровую часть столбца1.

Если весь ваш столбец 1 начинается с XYZ

SELECT MAX(CAST(SUBSTRING(column1, 4, length(column1)-3) AS UNSIGNED)) AS 
max_page FROM abc

SUBSTRING(column1, 4, length(column1)-3) помогает получить последние 4 цифры column1. Затем найдите MAX() от него.

Здесь 4 - это начальный индекс требуемых данных, т.е. XYZ1234 -> 1 находится на 4-м месте. 3 - количество символов, которые необходимо удалить (XYZ).

Подстрока (строка, start_pos, numbers_of_chars)

строка (обязательно) . Строка, из которой нужно извлечь

start_pos (обязательно) . Положение, чтобы начать добычу из. Первая позиция в строке 1

number_of_chars (обязательно) . Количество символов для извлечения

Лить (значение как тип)

Функция CAST() преобразует значение из одного типа данных в другой тип данных.

0
Sinto 15 Мар 2018 в 12:58