아레 포스트그레SQL 열 이름은 대소문자를 구분합니까?
할 말이 있어요persons
칼럼 이름을 가진 다른 팀에 의해 전해진 Postgres에서 다음과 같이 말합니다."first_Name"
이제 PG commander를 사용하여 이 열 이름에 대해 이 테이블을 쿼리하려고 합니다.
select * from persons where first_Name="xyz";
그리고 그것은 그냥 돌아옵니다.
오류: "first_Name" 열이 없습니다.
제가 어리석은 일을 하고 있는지, 아니면 제가 놓치고 있는 이 문제에 대한 해결책이 있는지 잘 모르겠습니다.
이중 따옴표로 묶이지 않은 식별자(열 이름 포함)는 Postgre에서 소문자로 접힙니다.SQL. 이중 따옴표로 작성되어 대문자(및/또는 기타 구문 위반)를 유지한 열 이름은 남은 기간 동안 이중 따옴표로 묶어야 합니다.
"first_Name"
값(문자열 리터럴/상수)은 작은 따옴표로 묶입니다.
'xyz'
그래, 그래, 포스트그리SQL 열 이름은 대소문자를 구분합니다(중따옴표로 묶은 경우).
SELECT * FROM persons WHERE "first_Name" = 'xyz';
저의 상설 조언은 이중 인용이 절대 필요하지 않도록 합법적인 소문자 이름만 사용하는 것입니다.
설명서 인용하기
키워드와 따옴표로 묶지 않은 식별자는 대소문자를 구분하지 않습니다.따라서:
UPDATE MY_TABLE SET A = 5;
다음과 같이 쓸 수 있습니다.
uPDaTE my_TabLE SeT a = 5;
따옴표로 묶은 식별자를 사용하여 작성할 수도 있습니다.
UPDATE "my_table" SET "a" = 5;
식별자를 따옴표로 묶으면 대소문자가 구분되는 반면, 따옴표로 묶이지 않은 이름은 항상 소문자로 접힙니다(따옴표로 묶지 않은 이름이 대문자로 접히는 SQL 표준과 달리).예를 들어, 식별자는FOO
,foo
,그리고."foo"
Postgre에 의해 동일하게 간주됩니다.SQL, 그러나"Foo"
그리고."FOO"
이 세 가지와 서로 다릅니다.
휴대용 응용프로그램을 작성하려면 항상 특정 이름을 인용하거나 인용하지 않는 것이 좋습니다.
대/소문자가 혼합된 열 이름은 PostgresQL에서 이중 따옴표로 묶어야 합니다.따라서 가장 좋은 관례는 모든 작은 사례를 밑줄로 따르는 것입니다.
JPA를 사용하는 경우 소문자 스키마, 테이블 및 열 이름으로 변경하는 것이 좋습니다. 다음 지침을 사용하여 도움을 받을 수 있습니다.
select
psat.schemaname,
psat.relname,
pa.attname,
psat.relid
from
pg_catalog.pg_stat_all_tables psat,
pg_catalog.pg_attribute pa
where
psat.relid = pa.attrelid
스키마 이름 변경:
ALTER SCHEMA "XXXXX" RENAME TO xxxxx;
테이블 이름 변경:
ALTER TABLE xxxxx."AAAAA" RENAME TO aaaaa;
열 이름 변경:
ALTER TABLE xxxxx.aaaaa RENAME COLUMN "CCCCC" TO ccccc;
이 예제에서는 대문자로 된 테이블 및 열 이름을 지정할 수 있습니다.(postgresql)
//Sql;
create table "Test"
(
"ID" integer,
"NAME" varchar(255)
)
//C#
string sqlCommand = $@"create table ""TestTable"" (
""ID"" integer GENERATED BY DEFAULT AS IDENTITY primary key,
""ExampleProperty"" boolean,
""ColumnName"" varchar(255))";
언급URL : https://stackoverflow.com/questions/20878932/are-postgresql-column-names-case-sensitive
'programing' 카테고리의 다른 글
WPF 데이터 그리드가 선택한 행 스타일 (0) | 2023.05.08 |
---|---|
"애저웹 앱"과 "애저앱 서비스"의 차이점은 무엇입니까? (0) | 2023.05.08 |
다른 테이블에 없는 ID의 레코드를 찾기 위한 SQL 쿼리 (0) | 2023.05.03 |
AngularJS에서 컨트롤러 간에 통신하는 올바른 방법은 무엇입니까? (0) | 2023.05.03 |
로그 파일 및 콘솔에 출력 쓰기 (0) | 2023.05.03 |