> 데이터 베이스 > MySQL 튜토리얼 > 열이 존재하는데도 PostgreSQL에서 '열이 존재하지 않습니다' 오류를 발생시키는 이유는 무엇입니까?

열이 존재하는데도 PostgreSQL에서 '열이 존재하지 않습니다' 오류를 발생시키는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-20 20:38:10
원래의
777명이 탐색했습니다.

Why Does PostgreSQL Throw a

PostgreSQL의 파악하기 어려운 "열이 존재하지 않습니다" 오류: 사례 연구

Java 개발자는 데이터베이스에 열이 명확하게 정의되어 있는 경우에도 PostgreSQL에서 당황스러운 "열이 존재하지 않습니다" 오류가 자주 발생합니다. 이는 데이터베이스에서 직접 열 이름을 가져오는 동적 쿼리를 구성할 때 자주 발생합니다.

일반적인 상황을 살펴보겠습니다. 사용자가 "네트워크" 스키마에 있는 "국가" 테이블 내의 "대륙" 열에서 Null이 아니고 비어 있지 않은 값을 검색하려고 합니다. 초기 쿼리는 다음과 같습니다.

<code class="language-sql">SELECT Continent
FROM network.countries
WHERE Continent IS NOT NULL
AND Continent <> ''
LIMIT 5</code>
로그인 후 복사

이 쿼리를 실행하면 실망스러운 오류가 발생합니다.

<code>org.postgresql.util.PSQLException: ERROR: column "continent" does not exist</code>
로그인 후 복사

"countries.Continent"를 사용하라는 PostgreSQL의 제안은 오해의 소지가 있습니다. 왜냐하면 pgAdmin 4에 해당 열이 있다는 사실을 부인할 수 없기 때문입니다.

해결책: 이중 인용의 중요성

문제는 열 이름 주위에 큰따옴표가 없기 때문에 발생합니다. 동적 쿼리에서는 이름 충돌을 방지하기 위해 열 이름 주위에 큰따옴표를 사용하는 것이 필수적입니다. 이렇게 하면 PostgreSQL이 이름을 리터럴 문자열로 처리하여 잠재적인 오해를 방지할 수 있습니다.

큰따옴표를 포함하는 수정된 쿼리는 다음과 같습니다.

<code class="language-sql">SELECT "Continent"
FROM network.countries
WHERE "Continent" IS NOT NULL
AND "Continent" <> ''
LIMIT 5</code>
로그인 후 복사

이 수정된 쿼리는 올바르게 실행되어 예상 결과(null이 아니고 비어 있지 않은 "Continent" 값)를 반환합니다. 이러한 일반적인 함정을 피하려면 동적 SQL에서 열 이름을 일관되게 큰따옴표로 묶어야 합니다.

위 내용은 열이 존재하는데도 PostgreSQL에서 '열이 존재하지 않습니다' 오류를 발생시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿