it-source

PostgreSQL - 따옴표 없이 구문 쿼리

criticalcode 2023. 8. 9. 20:49
반응형

PostgreSQL - 따옴표 없이 구문 쿼리

바보 같은 질문이 있습니다.Postgre를 설치했습니다.SQL DB Server에서 쿼리를 실행하면 따옴표가 없는 열 식별자에 문제가 있습니다.식별자 주변의 인용문이 왜 필요한지 모르겠습니다.내 질문:

SELECT vc."CAR_ID"
  FROM "VEL_CAR" vc, "VEL_DRIVER" vd, "VEL_DRIVER_CAR" vdc
WHERE vc."CAR_ID" = vdc."CAR_ID" and
      vdc."DRIVER_ID" = vd."DRIVER_ID";

Oracle DB의 관행은 "를 사용하지 않는 것입니다.Oracle의 경우:

SELECT vc.CAR_ID
  FROM VEL_CAR vc, VEL_DRIVER vd, VEL_DRIVER_CAR vdc
WHERE vc.CAR_ID = vdc.CAR_ID and
      vdc.DRIVER_ID = vd.DRIVER_ID;

Postgre에서 따옴표 없이 이 쿼리를 실행하는 경우SQL 구문에 대한 오류가 발생합니다.

ERROR:  column vc.car_id does not exist
LINE 1: SELECT vc.CAR_ID

왠지 알아?

--해결되었습니다.--감사합니다. 이제 문제를 해결했습니다!그것은 테이블 만들기에 관한 것이었습니다.pgAdmin을 사용하여 테이블 개체를 만들었습니다.III와 저는 테이블 이름과 열 이름을 대문자로 썼습니다. pgAdminIII는 이름이 대문자였기 때문에 할당량이 있는 쿼리를 만들었습니다.그래서 질문은 할당량으로 작성되어야 했습니다.

큰따옴표를 사용하여 테이블을 만들면 열과 테이블 이름이 대소문자를 구분합니다."car_id"는 (으)ㄹ 수 없는 입니다."CAR_ID"

. 그런 은 대소문자를. 그런 다음 이름은 대소문자를 구분하지 않습니다.car_id는 와동합다니와 .CAR_ID(누락된 인용문에 유의하십시오!)

자세한 내용은 설명서를 참조하십시오.

http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS


Oracle은 동일한 방식으로 작동합니다.유일한 차이점은 Oracle은 이름을 대문자로 저장하고 Postgres는 이름을 소문자로 저장한다는 것입니다.그러나 인용문을 사용할 때의 행동은 동일합니다.

포스트그레스 서에서:

식별자를 따옴표로 묶으면 대소문자가 구분되지만 따옴표로 묶이지 않은 이름은 항상 소문자로 접힙니다.예를 들어, FOO, foo 및 "foo" 식별자는 Postgre에서 동일하게 간주됩니다.SQL, 그러나 "Foo"와 "FOO"는 이 세 개와 서로 다릅니다. (Postgre에서 인용되지 않은 이름을 소문자로 접는 것)SQL은 따옴표로 묶지 않은 이름을 대문자로 접어야 한다는 SQL 표준과 호환되지 않습니다.따라서 foo는 기준에 따라 "foo"가 아닌 "FOO"와 동등해야 합니다.휴대용 애플리케이션을 작성하려면 항상 특정 이름을 인용하거나 인용하지 않는 것이 좋습니다.)

에 테블 VC에 이지열정라는 이름의 것 .car_id거기에 있는게 확실한가요?\d vel_car표의 구조를 확인합니다.

따옴표는 선택 사항이며 일반적으로 생략할 수 있습니다.

언급URL : https://stackoverflow.com/questions/6304268/postgresql-query-syntax-without-quotes

반응형