문자·날짜 함수 DB별 비교
6. 정리
문자 함수는 자르기(SUBSTR·SUBSTRING)·찾기(INSTR·LOCATE·CHARINDEX)·길이(LENGTH·CHAR_LENGTH·LEN)처럼 DB마다 이름이 다르지만 개념은 같고, TRIM·REPLACE 처럼 표준에 가까운 함수는 그대로 씁니다. 문자 수와 바이트 수는 한글에서 최대 3배 차이가 나므로, 화면 표시와 컬럼 크기 계산에 서로 다른 함수를 써야 합니다.
날짜 함수는 개월 더하기가 없는 날짜를 말일로 맞추는 점은 세 DB가 같지만 말일에서 출발하면 Oracle 만 말일로 따라간다는 점, 날짜 범위 조건은 BETWEEN 대신 >= 시작 AND < 다음날 패턴을 쓴다는 점이 핵심입니다.
H2 는 이 레슨에서 다룬 여러 Oracle·MySQL·MSSQL 전용 함수를 지원하지 않으며, 대신 OCTET_LENGTH·DATE_TRUNC·DATEDIFF·FORMATDATETIME·PARSEDATETIME·LPAD 같은 H2 자체 함수로 결과를 확인했습니다(전체 목록은 2.1·2.2절 표).
가장 조심할 점은 H2 가 실제 DB 보다 관대한 경우입니다. MySQL 모드의 LENGTH·CONCAT(NULL), MSSQL 모드의 LPAD·LAST_DAY 는 H2 에서 실행되지만 실제 DB 동작과 다르므로, 실무 코드를 작성할 때는 이 레슨의 대응표(2.1·2.2절)를 기준으로 그 DB의 진짜 함수 이름을 확인해야 합니다.