[sql] PostgreSQL 열 이름은 대소 문자를 구분합니까?

personsPostgres에서 열 이름이 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에서 대소 문자를 혼합 한 열 이름은 큰 따옴표로 묶어야합니다. 따라서 최선의 관례는 모든 작은 경우를 밑줄로 따르는 것입니다.


답변