복붙노트

[SQL] 포스트 그레스 대소 문자 구분

SQL

포스트 그레스 대소 문자 구분

내가 대문자에서의 컬럼과 함께 모든 테이블을 생성 도구를 통해 경우 MSSQL 서버 2008 포스트 그레스의 테이블 (100)을 가져 왔습니다. 지금은 테이블 예컨대에서 데이터보기를 만들고 싶어 - STD_TYPE_CODES 된 직후을

select * from STD_TYPE_CODES

나는 다음과 같은 오류 - 무엇입니까

ERROR:  relation "std_type_codes" does not exist
LINE 1: select * from STD_TYPE_CODES
                  ^
********** Error **********
ERROR: relation "std_type_codes" does not exist
SQL state: 42P01
Character: 15

나는 테이블 이름 주위에 따옴표를 넣을 수 있습니다 알고 시스 -

select * from "STD_TYPE_CODES"

난 경우 MSSQL Server와 함께 일한하지만, 문제의 그런 종류가 없다. 그래서 제거하는 방법이 있습니까? 도와주세요.

해결법

  1. ==============================

    1.PostgreSQL의에서 인용 부호로 둘러싸이지 않은 이름은 대소 문자를 구별하지 않는다. 따라서 안녕하세요 * 선택한 HELLO SELECT *는 동등하다.

    PostgreSQL의에서 인용 부호로 둘러싸이지 않은 이름은 대소 문자를 구별하지 않는다. 따라서 안녕하세요 * 선택한 HELLO SELECT *는 동등하다.

    그러나 인용 된 이름은 대소 문자를 구분합니다. SELECT * FROM는 "안녕하세요" "HELLO"SELECT * FROM 같지 않습니다.

    인용 된 이름과 인용 부호로 둘러싸이지 않은 이름 사이에 "다리"를하려면 인용 부호로 둘러싸이지 않은 이름은 암시 적으로 소문자로, 따라서 안녕하세요, 안녕하세요 안녕하세요 "안녕하세요"가 아니라 "HELLO"거나 동등한에 "Hello"(OOPS!).

    따라서, PostgreSQL의에서 엔티티를 생성 (테이블, 뷰, 프로 시저 등), 당신은 그들 중 하나를 인용 부호로 둘러싸이지 않은, 또는 인용 -하지만 - 소문자로 지정해야합니다.

    기존 테이블 / 뷰를 변환하려면 / 등 당신은 ALTER TABLE "FOO"이름을 바꾸려면 "foo는"같은 것을 사용할 수 있습니다.

    또는, "는 PostgreSQL의 호환"(그래서, FOOS 또는 "foo는"S 아니라 "FOO"의를 포함하는 것)하기 위해 MSSQL에서 덤프를 수정하려고합니다.

  2. from https://stackoverflow.com/questions/21796446/postgres-case-sensitivity by cc-by-sa and MIT license