타입 표현
종류 | 설명 | 예제 |
문자 | 작은 따옴표 사이에 표현 작은 따옴표를 표현하고 싶으면 작은 따옴표 연속 두 개 사용 |
'HELLO' 'She''s' |
숫자 | L(Long 타입 지정) D(Double 타입 지정) F(Float 타입 지정) |
10L 10D 10F |
날짜 | DATE {d 'yyy-mm-dd'} TIME {t 'hh-mm-ss'} DATETIME {ts 'yyyy-mm-dd hh:mm:ss,f'} |
{d '2012-03-24'} {t '10-11-11'} {ts '2012-03-24 10-11-11.123'} m.createDate = {d '2012-03-24'} |
Boolean | TRUE, FALSE | |
Enum | 패키지명을 포함한 전체 이름을 사용 | jpabook.MemberType.Admin |
엔티티 타입 | 엔티티의 타입을 표현한다. 주로 상속과 관련해서 사용한다. | TYPE(m) = Member |
연산자 우선 순위
- 경로 탐색 연산(.)
- 수학 연산: +, -. *, / ...
- 비교 연산: =, >, >= ... , BETWEEN, LIKE, IN ...
- 논리 연산: NOT, AND, OR
Between. IN, LIKE, NULL 비교
BETWEEN
SELECT m FROM Member m
WHERE m.age BETWEEN 10 AND 20
IN
SELECT m FROM Member m
WHERE m.username IN ('회원1', '회원2')
LIKE
SELECT m FROM Member m
WHERE m.username LIKE '%원%'
_(언더라인): 한글자는 아무 값이 입력되어도 되지만 값이 있어야 한다.
SELECT m FROM Member m
WHERE m.username LIKE '회원_'
NULL
SELECT m FROM Member m
WHERE m.username IS NULL
컬렉션 식
컬렉션에만 사용하는 특별한 기능이다.
컬렉션은 컬렉션 식 이외에 다른 식은 사용할 수 없다.
빈 컬렉션 비교 식
주문이 하나라도 있는 회원 조회
SELECT m FROM Member m
WHERE m.orders IS NOT EMPTY
실행된 SQL
SELECT m.* FROM Member m
WHERE
EXISTS (
SELECT i.id
FROM Orders o
WHERE m.id = o.member_id
)
컬렉션의 멤버 식
엔티티나 값이 컬렉션에 포함되어 있으면 참
SELECT t FROM t
WHERE :memberParam MEMBER OF t.members
문자 함수
함수 | 설명 | 예제 |
CONCAT(문자1, 문자2, ...) | 문자를 합한다. | CONCAT('A','B') = AB |
SUBSTRING(문자, 위치, [길이]) | 위치부터 길이만큼 문자를 구한다. | SUBSTRING('ABCEDF', 2, 3) = BCD |
TRIM([[LEADIG | TRAILING | BOTH] [ 트림 문자]FROM] 문자) | 공백 제거 | TRIM(' ABC ') = 'ABC' |
LOWER(문자) | 소문자로 변경 | |
UPPER(문자) | 대문자로 변경 | |
LENGTH(문자) | 문자 길이를 구한다. | LENGTH('ABC') = 3 |
LOCATE(찾을 문자, 원본 문자, [검색시작위치]) | 검색위치 부터 문자를 검색, 못 찾으면 0을 반환 | LOCATE('DE', 'ABCDEFG') = 4 |
수학 함수
함수 | 설명 | 예제 |
ABS(수학식) | 절대값을 구한다. | ABS( -10) = 10 |
SQRT(수학식) | 제곱근을 구한다. | SQRT(4) = 2.0 |
MOD(수학식, 나눌 수) | 나머지를 구한다. | MOD(4,3) = 1 |
SIZE(컬렉션 값 연관 경로식) | 컬렉션의 크기를 구한다. | SIZE(t.members) |
INDEX(별칭) | LIST 타입 컬렉션의 위치값을 구한다. 단 컬렉션이 @OrderColumn을 사용하는 LIST 타입일 때만 사용할 수 있다. |
t.members m WHERE INDEX(m) > 3 |
날짜 함수
종료된 이벤트 조회
SELECT e FROM Event e WHERE E.endDate < CURRENT_DATE
현재 년, 월, 일 조회
SELECT YEAR(CURRNET_TIMESTAMP), MONTH(CURRENT_TIMESTAMP), DAY(CURRENT_TIMESTAMP)
FROM Member
COALESCE
m.username 이 null 이면 '이름 없는 회원'을 반환하라
SELECT COALESCE(m.username, '이름 없는 회원') FROM Member m
NULLIF
사용자 이름이 '관리자'면 null을 반환하고 나머지는 본인의 이름을 반환하라
SELECT NULLIF(m.username, '관리자') FROM Member m
728x90
'JVM > JPA' 카테고리의 다른 글
QueryDSL (0) | 2023.06.28 |
---|---|
JPQL 다형성 쿼리, 사용자 정의 함수, Named 쿼리 (0) | 2023.06.28 |
JPQL 서브쿼리 (0) | 2023.06.26 |
JPQL 조인과 페치조인 (0) | 2023.06.25 |
JPQL 기초 (0) | 2023.06.25 |