728x90
출처: https://seungdols.tistory.com/923
nvl => COALESCE으로 대체
nvl 함수는 null이면, 다른값으로 치환 해주는 함수이다.
오라클에서는 정말 잘 쓰이지만, postgresql에서는 해당 함수가 없다.
COALESCE이란 함수가 있기에 대체가 가능하다.
decode => CASE WHEN 으로 대체
오라클에서 자주 사용하는 조건문 함수 decode가 postgresql에는 없다.
CASE WHEN [COLUMN] IS NULL THEN 'N' ELSE [COLUMN] END AS [COLUMN]형태로 바꿔서 사용이 가능하다.
날짜 값에서 특정 시간 만큼 빼기 - mybatis에서 파라미터로 넘겨줄 때 처리
보통 오라클에서 쓸때는 아래처럼 사용 했다.
(SYSDATE - 60/60/24)
이걸 mybatis로 바꾸면 아래와 같다.
(SYSDATE - #{diff}/60/24)
그럼 이제 diff 값은 파라미터로 전달만 해주면 된다.
문제는 postgresql에서는 위와 같은 방식으로 해결이 안된다.
(current_timestamp - INTERVAL '12' hour)
위와 같이 INTERVAL에 시간 그리고 단위를 문자열로 붙여줘야 된다.
처음에 이것 때문에, mybatis에서 구문 오류가 발생하여 삽질을 좀 했다.
mybatis에서 아래처럼 하면 정상적으로 동작 한다.
current_timestamp - INTERVAL '${diff} min'
주로, mybatis에서는 #{}를 많이 사용했는데, 여기는 어쩔 수 없이 위와 같이 해결 했다.
728x90
반응형
'정보관리(데이터베이스, DB) > PostgreSQL(포스트그레 에스큐엘)' 카테고리의 다른 글
drupal10에서 postgresql 설치 시 설정 (0) | 2023.12.10 |
---|---|
[드루팔 -8] Drupal 8.x PostgreSQL 설치 (0) | 2023.12.10 |
[DB] Windows10 PostgreSQL Binary 실행하기 (Portable) (4) | 2023.08.30 |
Docker로 PostgreSQL 사용하기 (0) | 2023.07.25 |
Rocky Linux 9에 PostgreSQL 15를 설치하는 방법 (0) | 2023.04.28 |