인프런 커뮤니티 질문&답변

Gg G님의 프로필 이미지
Gg G

작성한 질문수

실전! Querydsl

querydsl 의 order by 문에서 cast 와 replace 를 사용하는 방법

작성

·

805

0

김영한님

현재 해당 sql 쿼리를 querydsl 바꿔야하는 상황이고 
제품의 가격별로 페이징 및 정렬을 해야하는 상황입니다.
문제는 현재 product table 에 있는 데이터가 ₩8,000 이렇게 들어가 있는 상태고 전부 string 입니다. 

그런제 저가순/고가순 그리고 페이징 까지 적용해야하는 상황인데
sql문까지는 만들 수 있는데, 문제는 querydsl 로 적용하는 부분에서 막혔습니다.

이게 sql 문이고 
select * from product order by cast(replace(replace(product.price,‘₩’,‘’), ‘,’,‘’) as decimal) asc;

orderby 구문에서 replace 와 cast 를 전부 적용해야하는 데, 변환가능한 문제인지 묻고싶습니다 ㅠ




 염치불구하고 두서없이 질문드려서 죄송합니다...

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. Gg G님

먼저 product table에 데이터를 숫자로 바꾸셔야 할 것 같습니다.

(먼저 별도의 컬럼을 하나 파고 마이그레이션 하는 것이 좋겠지요?)

이렇게 되어 있으면 결국 성능에서도 문제가 됩니다.

추가로 Querydsl에서 orderBy가 복잡해도 동작은 하는데, cast(replace(replace)).. 이 부분을 어떻게 만들 수 있을지 저도 잘 모르겠습니다. 복잡한 orderBy를 적용하는 방법을 다음을 참고해주세요.

https://www.inflearn.com/questions/71345

감사합니다.

Gg G님의 프로필 이미지
Gg G

작성한 질문수

질문하기