persons
Postgres에서 열 이름이 say 인 다른 팀이 전달한 db 테이블이 "first_Name"
있습니다. 이제 PG Commander를 사용 하여이 column-name 에서이 테이블을 쿼리하려고합니다.
select * from persons where first_Name="xyz";
그리고 그것은 단지 반환
오류 : “first_Name”열이 존재하지 않습니다
내가 어리석은 일을하고 있는지 또는 내가 누락 된이 문제에 대한 해결 방법이 있는지 확실하지 않습니까?
답변
큰 따옴표로 묶지 않은 모든 식별자 (열 이름 포함)는 PostgreSQL에서 소문자로 접 힙니다. 큰 따옴표로 작성되어 대문자 (및 / 또는 다른 구문 위반)를 유지하는 열 이름은 나머지 수명 동안 큰 따옴표로 묶어야합니다. ( "first_Name"
)
그래서, 예 , PostgreSQL의 열 이름은 대소 문자를 구분합니다 :
SELECT * FROM persons WHERE "first_Name" = 'xyz';
주변의 따옴표를 수정하십시오 'xyz'
. 값 (문자열 리터럴)은 작은 따옴표로 묶습니다 .
저의 충고는 법률적인 소문자 이름 만 사용하므로 큰 따옴표는 필요하지 않습니다.
답변
설명서 를 인용하려면 :
키워드 및 따옴표없는 식별자는 대소 문자를 구분하지 않습니다. 따라서:
UPDATE MY_TABLE SET A = 5;
다음과 같이 쓸 수 있습니다 :
uPDaTE my_TabLE SeT a = 5;
인용 된 식별자를 사용하여 작성할 수도 있습니다 .
UPDATE "my_table" SET "a" = 5;
인용 부호를 인용하면 대소 문자를 구분하지만 인용 부호없는 이름은 대문자로 접는 SQL 표준과 달리 인용 부호없는 이름은 항상 소문자로 접 힙니다. 예를 들어, 식별자 FOO
, foo
및 "foo"
PostgreSQL을하여 동일한 것으로 간주되지만, "Foo"
및 "FOO"
이들 세 가지 서로 다르다.
휴대용 응용 프로그램을 작성하려면 항상 특정 이름을 인용하거나 인용하지 않는 것이 좋습니다.
답변
PostgresQL에서 대소 문자를 혼합 한 열 이름은 큰 따옴표로 묶어야합니다. 따라서 최선의 관례는 모든 작은 경우를 밑줄로 따르는 것입니다.