참고
JPQL타입 표현과 기타식
NOTE
•
문자 : “HELLO”, “SHE”
•
숫자: 10L(Long), 10D(Double), 10F(Float)
•
Boolean: TRUE, FALSE
•
ENUM: jpabook.MemberType.Admin(패키지명 포함)
select m.username, 'HELLO', true from Member m
where m.type = jpql.MemberType.ADMIN
SQL
복사
•
엔티티 타입: TYPE(m)= Member(상속 관계에서 사용)
em.createQuery("select i from Item i where type(i) = Book", Item.class);
SQL
복사
조건식(CASE 등등)
NOTE
기본 CASE 식
select case when m.age <= 10 then '학생요금'
when m.age >= 60 then '경로요금'
else '일반요금'
end
from Member m
SQL
복사
단순 CASE 식
select case t.name
when '팀A' then '인센티브 110%'
when '팀B' then '인센티브 120%'
else '인센티브 105%'
end
from Team t
SQL
복사
•
COALESCE: 하나씩 조회해서 null이 아니면 반환
select coalesce(m.username, '이름 없는 회원') from Member m;
SQL
복사
•
NULLIF: 두 값이 같으면 null 반환, 다르면 첫번째 값 반환
select NULLIF(m.username, '관리자') from Member ;
SQL
복사
JPQL 함수
NOTE
//- CONCAT
select concat('a','b'); //ab
//- SUBSTRING: firstParam의 값을 secondParam위치부터 thirdParam갯수만큼 잘라서 반환
select substring('abcd', 2,3) // bc
//- TRIM
select trim(' lee han sol ')//lee han sol
//- LOWER, UPPER
select LOWER('hansolHI');//hansolhi
select UPPER('hansolHI');//HANSOLHI
//- LENGTH
select LENGTH('hansolHI'); // 6
//- LOCATE
select LOCATE('so', 'hansol');//4
//- ABS, SQRT, MOD
select ABS(-30);// 30
select SQRT(4);//2
select MOD(4,2);//0
//- SIZE, INDEX(JPA용도)
select SIZE(t.members) from Team t // 0
SQL
복사
•
CONCAT
•
SUBSTRING
•
TRIM
•
LOWER, UPPER
•
LENGTH
•
LOCATE
•
ABS, SQRT, MOD
•
SIZE INDEX(JPA용도)