테스트 사이트 - 개발 중인 베타 버전입니다

php 필드 정렬 관련 채택완료

좋은사진 2년 전 조회 2,369

안녕하세요.

 

php 필드 정렬할 때,

 

VARCHAR 로 소수점포함한 숫자로 입력된 것을 정렬하면 16.111111111111 16.944444444444 8.3333333333333 8.4444444444444

와 같이 정렬됩니다.

 

int 로 입력하면 소수점이하는 사라지고

 

 

아래와 같이 정렬하려면 필드를 어떻게 해야 하는지요? 8.3333333333333 8.4444444444444 16.111111111111 16.944444444444

 

^^

댓글을 작성하려면 로그인이 필요합니다.

답변 6개

채택된 답변
+20 포인트

SELECT * FROM 테이블 ORDER BY CAST(컬럼명 AS DECIMAL) ASC;

아니면 이렇게 해보세요.

 

데이터형을 숫자형(소숫점)으로 변환합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

https://cclass.tistory.com/entry/MySQL-%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%83%80%EC%9E%85-DateType?category=918764

정확한 금액이나 대출이자등 고정된 소수점을 구하고 싶다면 DECIMAL 타입을 사용해야한다.

 

적절한 타입으로 변경하시는 걸 추천합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

select * from 테이블 order by cast(필드명 as decimal)

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

$nums = [16.111111111111,
16.944444444444,
8.3333333333333,
8.4444444444444];
sort($nums); // 이 부분처럼 하시면 됩니다.
foreach ($nums as $num) {
    echo $num."\n";
}
이런종류의 정렬은 할 줄 압니다.

 

int

처럼 필드 종류로 입력받아

정렬하고 싶어 질문 드린 것입니다.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

 ORDER BY 컬럼명 ASC;

 했는데 안되어 질문드린 것입니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

애드프로
2년 전
그럼 뿌리는곳에서 2차 정렬을 하지 않았을까요?
뭔가 질문글에 상세 내용이 많이 빠진듯 합니다.

댓글을 작성하려면 로그인이 필요합니다.

SELECT * FROM 테이블명 ORDER BY 컬럼명 ASC;

이렇게 하면 오름차순 정렬 될텐데요?

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인