JPA/JPQL

[JPA] 쿼리결과 변환하기 ( JPQL 함수 )

IT록흐 2023. 6. 14. 21:03
반응형

 

SELECT [ 컬럼 ] FROM [ 테이블 ] WHERE [ 조건 ]

 

SELECT문은 FROM의 레코드집합에서 WHERE로 필터링 된 레코드 중 원하는 컬럼을 출력하는 쿼리문이다.  출력되는 컬럼은 조건에 따라 다른 값으로 변환될 수 있다. 

 

 

CASE 조건식 

 

CASE 조건식은 JPQL에서도 사용가능하다. 

SELECT 
	CASE WHEN m.age <= 10 THEN '학생요금'
    	 WHEN m.age >= 60 THEN '경로요금'
         ELSE '일반요금'
   	END
FROM Member m 
WHERE m.city IN ( SELECT c FROM City c WHERE c.name = '대구' )

 

대구에 거주하는 회원의 나이를 출력하는 SELECT문인데, CASE 조건식으로 출력결과가 변환되었다. 나이가 10살 이하면 학생요금 나이가 60살 이상이면 경로요금 그 사이면 일반요금으로 출력한다. 이처럼 JPQL도 SQL처럼 출력결과를 조건에 따라 변환할 수 있다. 

 

 

NULL과 관련된 유용한 함수 두 가지가 있다.

 

COALESCE

SELECT 
	COALESCE(m.name,'이름없는 회원')
FROM Member m

 

컬럼값이 NULL이면 '이름없는 회원'이 출력되는 함수이다. 

 

NULLIF 

SELECT 
	NULLIF(m.name,'관리자')
FROM Member m

 

이름이 '관리자'이면 NULL을 출력하는 함수이다. '관리자'가 아니라면 그대로 출력한다. 보통 특정값을 결과에서 필터링하기 위해 사용된다. 회원중에 관리자인 경우를 필터링하기 위해 NULL을 출력한다고 이해하면 된다. 

 

 

이외에도 다양한 JPQL 기본함수가 제공된다. 

 

CONCAT : 합치기

SUBSTRING : 문자열 자르기

TRIM : 공백제거

LOWER,UPPER : 대소문자 변환

LENGTH : 길이 

등등이 있다.

 

 


 

 

참고자료

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

 

반응형

'JPA > JPQL' 카테고리의 다른 글

[JPA] 페치 조인 ( JOIN FETCH )  (0) 2023.06.15
[JPA] 묵시적 조인보다는 명시적 조인  (0) 2023.06.15
[JPA] 서브쿼리 ( SubQuery )  (0) 2023.06.14
[JPA] JOIN 과 JOIN FETCH의 차이  (0) 2023.06.14
[JPA] 페이징 API  (0) 2023.06.13