programing

VARCHAR 필드에서 MAX() 사용

lovecodes 2023. 8. 13. 10:23
반응형

VARCHAR 필드에서 MAX() 사용

다음과 같은 데이터 세트가 있는 테이블이 있습니다.

ID (VARCHAR2 field)
D001
D002
D010
D0012

사용합니다max()이 방면에

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

돌아옵니다D010그 결과

결과가 그렇지 않은 이유는 무엇입니까?D0012?

당신은.D010왜냐하면 알파벳순으로,D010뒤에 오는D0012아니면 다른 말을 했거나,D01뒤에 오는D00그러므로 모든 것은.D01x시작하는 모든 것 뒤에 옵니다.D00x.

아래 코드는 당신의 예상대로 저에게 효과가 있습니다.

select max(to_number(regexp_substr(id, '\d+'))) id from <yourtable>;
SELECT * 
FROM  `<TABLE_NAME>` 
ORDER BY CAST(  `ID` AS DECIMAL( 10, 3 ) ) DESC 

이것은 효과가 있을 것입니다.

Select MAX(ID) from table where IsNumeric(ID) = 1 ; 

이것은 틀림없이 효과가 있을 것입니다.

    select MAX(CAST(REPLACE(REPLACE(ID, 'D', ''), '', '') as int)) from <table-name>

MAX로 선택하려면 먼저 Varchar를 int로 캐스팅해야 합니다.아래 쿼리 사용:

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

언급URL : https://stackoverflow.com/questions/6353427/using-max-in-varchar-field

반응형