반응형
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 : 길이
등등이 있다.
참고자료
반응형
'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 |