PostgreSQL에서 NULL 두 개를 UNION하면 뒤의 정수가 실패하는 이유
NULL UNION 1은 성공하는데 NULL UNION NULL UNION 1은 실패하는 이유를 중간 결과의 pg_typeof로 확인한다. 첫 NULL의 integer 캐스트, UNION ALL의 중복 처리, 괄호에 따른 타입 결정 차이를 PostgreSQL 18.6 실행 결과로 비교한다.
빌드노트
데이터베이스 카테고리의 글입니다.
총 48개의 글
NULL UNION 1은 성공하는데 NULL UNION NULL UNION 1은 실패하는 이유를 중간 결과의 pg_typeof로 확인한다. 첫 NULL의 integer 캐스트, UNION ALL의 중복 처리, 괄호에 따른 타입 결정 차이를 PostgreSQL 18.6 실행 결과로 비교한다.
PostgreSQL에서 긴 테이블 이름의 끝만 바꾸면 길이 제한 밖의 차이가 사라져 중복으로 충돌할 수 있다. 실제 서버 제한과 카탈로그 이름을 조회하고, PostgreSQL 18.6의 NOTICE·SQLSTATE·짧은 이름 대조로 확인한다.
CREATE INDEX CONCURRENTLY의 25001 오류에서 같은 연결의 BEGIN과 실행기의 트랜잭션 설정을 확인한다. 인덱스 생성 단계를 분리하고, 실제 인덱스 상태와 마이그레이션 이력을 대조하는 기준을 PostgreSQL 18.6 실습으로 설명한다.
이전 값과 새 값을 <>로 비교하면 NULL로 비우거나 채운 행이 빠진다. PostgreSQL 18.6에서 비교식과 WHERE 결과를 확인하고, IS DISTINCT FROM의 선택 기준과 COALESCE가 빈 문자열·0 전환을 숨기는 경우를 설명한다.
PostgreSQL의 DateStyle 입력 순서에 따라 같은 01/02/2026이 1월 2일 또는 2월 1일로 저장된다. PostgreSQL 18.6에서 MDY·DMY, ISO 입력, 표시만 달라지는 날짜와 잘못된 날짜를 비교하고 입력 계약을 명확히 하는 방법을 설명한다.
PostgreSQL에서 INSERT를 롤백해 행이 없어져도 nextval이 소비한 번호는 돌아오지 않는다. 새 시퀀스의 행 수·발급 상태·다음 ID를 비교하고, 연속 업무 번호를 별도로 설계해야 하는 이유를 설명한다.
jsonb_set의 true는 없는 마지막 항목을 추가하지만 중간 부모까지 만들지는 않는다. PostgreSQL 18.6에서 부모 없음·객체·JSON null을 비교하고, 필요한 부모만 만들며 형제 키를 보존하는 조건식과 루트 병합의 차이를 확인한다.
array_agg의 원소 순서는 집계 안의 ORDER BY로 정하고, 최종 결과 행의 순서는 바깥 ORDER BY로 정한다. PostgreSQL 18.6에서 두 입력 방향, 동점 보조 키, 그룹 정렬을 비교하고 관찰값과 문서상 보장을 구분한다.
LEFT JOIN 뒤 json_agg의 [null]은 자식이 없는 행 하나가 집계에 들어간 결과일 수 있다. PostgreSQL 18.6에서 자식 0개·1개·여러 개와 NULL 내용을 비교하고, 기본 키 FILTER와 집계 밖 COALESCE로 빈 배열을 만들면서 실제 자식은 보존한다.
매개변수로 전달해도 _와 %는 LIKE 패턴으로 해석된다. PostgreSQL 18.6에서 원래 조회와 명시적 ESCAPE, 잘못된 치환 순서를 비교하고, 입력 그대로 포함하는 검색에서 !·%·_를 처리할 순서를 정한다.
nullable 복합 키의 기본 UNIQUE는 NULL을 포함한 중복을 허용한다. PostgreSQL 18.6의 실제 INSERT와 23505를 비교하고, 15에서 도입된 NULLS NOT DISTINCT의 선택 기준과 기존 중복을 정리해야 하는 제약 변경 경계를 설명한다.
이름 일부가 NULL이면 ||로 합친 이름 전체가 NULL이 된다. PostgreSQL 18.6에서 concat·concat_ws·COALESCE의 결과와 남는 공백을 비교하고, 빈 문자열도 생략하거나 이름이 모두 없을 때 대체 문구를 표시하는 식을 설명한다.