Простое заявление Postgresql - имя столбца не существует - PullRequest
11 голосов
/ 27 апреля 2011

Я вырывал свои волосы.У меня очень простая база данных postgre, в одной конкретной таблице есть столбец с именем lName (заглавными буквами N).Теперь я знаю, что с postgre я должен цитировать lName, поскольку он содержит заглавные буквы N.

Я пытаюсь выполнить запрос к базе данных с помощью следующего оператора:

SELECT * FROM employee WHERE"LIKE" Smith "

Но я получаю эту ошибку:

Предупреждение: pg_query () [function.pg-query]: Ошибка запроса: ОШИБКА: столбец"Смит "не существует в .....

В чем здесь проблема?Почему говорится, что колонка "Смит"?

Ответы [ 2 ]

24 голосов
/ 27 апреля 2011

Я бы предположил:

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

(обратите внимание на различные кавычки; "foo" - идентификатор в кавычках; 'foo' - строковый литерал)

Кроме того, в большинстве диалектов SQLLIKE без подстановочного знака эквивалентно =;Вы хотели включить подстановочный знак?

4 голосов
/ 27 апреля 2011

Поскольку "Smith" является идентификатором, и в этой позиции идентификатор, как ожидается, будет столбцом. Вы, вероятно, имели в виду строковый литерал, который использует одинарные кавычки: 'Smith'. Так

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

Возможно, вы также хотите, чтобы в строке поиска был подстановочный знак ('Smith%'?). LIKE сопоставление привязано к началу и концу строки, в отличие от типичного сопоставления регулярного выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...