В чем разница между одинарными кавычками и двойными кавычками в PostgreSQL?
Я новичок в PostgresSQL. Я пробовал
select * from employee where employee_name="elina";
Но это приводит к ошибке следующим образом:
ERROR: column "elina" does not exist.
Затем я попытался заменить двойные кавычки одиночными кавычками следующим образом:
select * from employee where employee_name='elina';
В результате получается точная. Какая разница между одинарными кавычками и двойными кавычками в postgresql.Если мы не можем использовать двойные кавычки в postgres-запросе, то, если любое другое использование для этих двойных кавычек в postgreSQL?
Ответы
Ответ 1
Двойные кавычки предназначены для имен таблиц или полей. Иногда их можно опустить. Одиночные кавычки предназначены для строковых констант. Это стандарт SQL. В сложной форме ваш запрос выглядит так:
select * from "employee" where "employee_name"='elina';
Ответ 2
Как объяснено в в руководстве PostgreSQL:
Строковая константа в SQL - это произвольная последовательность символов, ограниченная одинарными кавычками ('
), например 'This is a string'
. Чтобы включить символ одиночной кавычки в строковой константе, напишите две соседние одинарные кавычки, например, 'Dianne' horse'
. Обратите внимание, что это не то же самое, что символ двойной кавычки ("
).
В другом месте на той же странице:
Существует второй тип идентификатора: идентификатор с разделителями или цитируемый идентификатор. Он формируется путем включения произвольной последовательности символов в двойные кавычки ("
). Идентификатор с разделителями всегда является идентификатором, а не ключевым словом. Поэтому "select"
можно использовать для ссылки на столбец или таблицу с именем "select", тогда как некорректный select
будет использоваться как ключевое слово и поэтому будет провоцировать ошибку синтаксического анализа при использовании там, где ожидается имя таблицы или столбца.
TL; DR: одинарные кавычки для строковых констант, двойные кавычки для имен таблиц/столбцов.
Ответ 3
Нулевые кавычки используются для строковых литералов, а двойные кавычки используются для экранирования объектов БД, таких как имя таблицы/имя столбца и т.д.
В частности, двойные кавычки используются для экранирования имени столбца/таблицы, если оно похоже на любое резервное/ключевое слово. Хотя у каждой РСУБД есть свой способ избежать того же (например, backtique в MySQL
или квадратной скобке в SQL Server
), но использование двойных кавычек - стандарт ANSI.