2011-04-27 10 views
11

나는 머리카락을 꺼내 ​​왔습니다. 나는 아주 간단한 postgre 데이터베이스를 가지고 있는데, 하나의 특정 테이블은 lName (대문자 N)이라는 컬럼을 가지고있다. 이제 나는 내가 다음과 같은 성명을 사용하여 데이터베이스 쿼리하려고간단한 Postgresql 문 - 열 이름이 없습니다.

대문자 N을 포함하고 있기 때문에 내가 LNAME을 인용한다 postgre으로 알고

SELECT * FROM employee WHERE "lName" LIKE "Smith"

을하지만 난이 오류가 나타납니다 이니

Warning: pg_query() [function.pg-query]: Query failed: ERROR: column "Smith" does not exist in .....

여기에 어떤 문제가 있습니까? 그 칼럼이 "스미스"라고 말하는 이유는 무엇입니까?

답변

23

것 같아요 것 :

SELECT * FROM employee WHERE "lName" LIKE 'Smith' 

(다른 따옴표를주의; "foo"이 인용 식별자입니다 'foo' 리터럴 문자열) 대부분의 SQL 방언에서,

또한, LIKE 와일드 카드없이 =에 해당; 와일드 카드를 포함하셨습니까?

4

"Smith"은 식별자이며 해당 위치에서 식별자가 열일 것으로 예상됩니다. 아마도 작은 따옴표 인 'Smith'을 사용하는 문자열 리터럴 일 것입니다. 그래서

SELECT * FROM employee WHERE "lName" LIKE 'Smith' 

당신은 아마 또한 문자열에 와일드 카드 검색 할 ('Smith%'?). LIKE 매칭은 일반적인 정규식 매칭과 달리 문자열의 시작과 끝에 고정됩니다.

관련 문제