> 백엔드 개발 > PHP 튜토리얼 > 열이 존재하는데도 내 Postgresql 쿼리가 '열이 존재하지 않습니다' 오류를 반환하는 이유는 무엇입니까?

열이 존재하는데도 내 Postgresql 쿼리가 '열이 존재하지 않습니다' 오류를 반환하는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-27 21:44:13
원래의
803명이 탐색했습니다.

Why Does My Postgresql Query Return a

Postgresql의 "열이 존재하지 않습니다" 오류 이해

간단해 보이는 Postgresql 쿼리를 실행하려고 하면 사용자에게 오류가 발생할 수 있습니다. 지정된 열이 존재하지 않는다고 주장합니다. 이는 특히 문제의 열이 데이터베이스에 존재하는 것으로 알려진 경우 혼란스러울 수 있습니다.

문제 조사

이 오류를 유발하는 일반적인 쿼리는 다음과 유사합니다. 다음:

SELECT * 
FROM employee 
WHERE "lName" LIKE "Smith"
로그인 후 복사

그러나 오류 메시지는 "Smith" 열이 존재하지 않음을 나타냅니다. 실제 열 이름이 "lName"이므로 헷갈립니다.

오류의 근본 원인

이 오류는 Postgresql이 큰따옴표("")를 해석하는 방식을 잘못 이해한 데서 비롯됩니다. SQL 문에서. Postgresql에서 큰따옴표는 테이블 이름 및 열 이름과 같은 데이터베이스 개체를 참조하는 따옴표로 묶인 식별자를 묶습니다. 그러나 이 경우 "Smith" 주위의 큰따옴표는 대신 문자열 상수를 생성합니다.

쿼리 수정

문제를 수정하려면 쿼리를 수정해야 합니다. 열 이름 "lName"을 올바르게 인용하려면:

SELECT * 
FROM employee 
WHERE "lName" LIKE 'Smith'
로그인 후 복사

여기서는 작은따옴표(')를 사용하여 값 'Smith'를 묶어서 비교용 문자열 리터럴을 생성합니다.

추가 고려 사항

인용 외에도 혼동을 일으킬 수 있는 또 다른 원인은 LIKE에 누락된 와일드카드입니다. 비교. 일반적으로 LIKE 연산에는 원하는 수의 문자와 일치하는 와일드카드 문자(%)가 포함됩니다. 이 쿼리에서는 다음을 사용하는 것이 더 적절할 수 있습니다.

SELECT * 
FROM employee 
WHERE "lName" LIKE 'Smith%'
로그인 후 복사

이렇게 하면 "lName" 열의 값이 'Smith'로 시작하는 행이 결과 집합에 포함됩니다.

위 내용은 열이 존재하는데도 내 Postgresql 쿼리가 '열이 존재하지 않습니다' 오류를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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