티베로(Tibero) 오류 (Error:# -8008, Missing expression.at line 10, column 40 of null)
알티베이스(AS-IS) => 티베로 (TO-BE) 데이터베이스 구문 변경 중 위 오류가 나왔다.
위 오류의 내용은 일반적으로 프로그래밍 코드나 스크립트에서 문제가 발생했을 때 출력된다.
이 오류를 해결하기 위해서는 코드의 해당 라인 및 열 (line 10, column 40)을 확인하여 문제가 있는 표현식이나 구문을 찾고 있었다. 아무리 봐도 오류가 없어서 티베로 구문을 하나하나 검색해서 확인해봤는데
이유는 CASE문이었다.
알티베이스에서는 CASE와 CASE2가 사용되는데, 티베로에서는 CASE2를 지원하지 않는다.
사용법은 거의 유사하다.
CASE2 예시
SELECT product_id,
CASE2(product_type = 'A', price * 0.9,
product_type = 'B', price * 0.8,
price * 0.95) AS discounted_price
FROM products;
"CASE2" 함수: "CASE2" 함수는 알티베이스에서 제공하는 확장된 함수로, 두 개의 인자쌍을 사용하여 조건과 결과를 나란히 정의할 수 있고, 첫 번째 인자는 조건을, 두 번째 인자는 조건이 참일 때 반환할 값을, 세 번째 인자는 조건이 거짓일 때 반환할 값을 나타냄.
알티베이스의 Built-In 함수 중 CASE2 예시이다. WHEN, THEN, ELSE가 없는 CASE문이며 기존 문법과 차이가 거의 없다.
CASE WHEN 예시
SELECT name,
CASE WHEN age >= 18 THEN 'Adult'
WHEN age >= 13 THEN 'Teenager'
ELSE 'Child' END AS age_group
FROM person;
"CASE" 함수: "CASE" 함수는 표준 SQL에서 널리 사용되는 조건문으로, 여러 조건을 체크하고 해당 조건에 따라 다른 결과 값을 반환하고 "CASE" 함수는 다양한 조건을 명시적으로 나열하여 처리한다.
위는 자주 사용되는 CASE WHEN 문법이다. 개인적으로 가독성은 WHEN이 들어간게 더 좋게 느껴지는데 비유하자면CASE WHEN은 IF ELSE같은 느낌으로 눈에 확 보이지만 CASE2는 삼항연산자 같은 느낌이다.
의미는 같지만 사용법이 약간 다르다.
CASE WHEN은 IF ELSE같은 느낌으로 눈에 확 보이지만 CASE2는 삼항연산자 같은 느낌
의미는 같지만 사용법이 약간 다르다. 취향에 따라 어떤 함수를 사용할지 선택할 수 있지만, "CASE2" 함수는 간결하게 여러 개의 조건과 결과를 처리할 수 있는 장점이 있다. 프로젝트의 일관성을 유지하기 위해 팀 내에서 결정하거나, 문제를 해결하는 데 더 나은 방식을 선택하는 것이 좋겠다.
(필자는 CASE WHEN이 개취)
'DB(Database)' 카테고리의 다른 글
[DB] 성능 튜닝 ANALYZE TABLE [테이블] COMPUTE STATISTICS | 민민의 하드디스크 - 티스토리 (0) | 2024.10.29 |
---|---|
[데이터베이스] DB 병렬 처리(Parallel Processing) | 민민의 하드디스크 - 티스토리 (0) | 2023.09.10 |
[데이터베이스] DDL, DML, DCL이란? | 민민의 하드디스크 - 티스토리 (0) | 2023.06.20 |