Использование MAX () в поле VARCHAR - PullRequest
7 голосов
/ 15 июня 2011

У меня есть таблица со следующим набором данных

ID (VARCHAR2 field)
D001
D002
D010
D0012

Я использую max() в этом поле.

Select max(ID) from <table-name>;

Возвращает D010 как результат.

Почему результат не D0012?

Ответы [ 6 ]

18 голосов
/ 15 июня 2011

Вы получаете D010, потому что в алфавитном порядке D010 идет после D0012 или, иначе говоря, D01 идет после D00, и поэтому все, что D01x, идет после того, что начинается D00x.

3 голосов
/ 27 июня 2016

код ниже работает для меня, как вы ожидаете

select max(to_number(regexp_substr(id, '\d+'))) id from <yourtable>;
0 голосов
/ 17 сентября 2018

ВЫБРАТЬ * ОТ <TABLE_NAME> ЗАКАЗ ПО БОРЬБЕ (ID КАК ПОКАЗАТЕЛЬ (10, 3)) DESC

0 голосов
/ 15 августа 2018

Первый Varchar нужно отлить как int чтобы выбрать как MAX. Используйте запрос ниже:

select max(CAST(ID as signed)) as max_id from <table-name>;

0 голосов
/ 18 января 2017

Это наверняка сработает.

    select MAX(CAST(REPLACE(REPLACE(ID, 'D', ''), '', '') as int)) from <table-name>
0 голосов
/ 20 апреля 2016

это должно работать

Select MAX(ID) from table where IsNumeric(ID) = 1 ; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...