작성
·
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
감사합니다.