programing

아레 포스트그레SQL 열 이름은 대소문자를 구분합니까?

topblog 2023. 5. 3. 20:46
반응형

아레 포스트그레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

반응형