PostgreSQL — Экранирование одинарной кавычки в псевдониме столбца

#postgresql #column-alias

Вопрос:

Как избежать одинарной кавычки в псевдониме столбца в PostgreSQL?

Я попробовал несколько синтаксисов, но безуспешно:

 SELECT 'Test 1' AS 'O''Connell';

SELECT 'Test 2' AS 'O'Connell';

SELECT 'Test 3' AS "O''Connell";
 

Скриншот pgAdmin

pgadmin_screenshot

Комментарии:

1. Идентификаторы заключены в двойные кавычки, поэтому: SELECT "Test 3" AS "O''Connell" FROM ...; см. Раздел Идентификаторы

2. @AdrianKlaver «тест 3» будет столбцом, а не текстом, и имя столбца будет содержать 2 одинарные кавычки…

3. @JGH, если бы вы обратили внимание на вопрос, вы бы увидели, что GeoGyro спрашивает об псевдониме столбца, а не о псевдониме строки, и мое предложение правильно для этого приложения.

Ответ №1:

Используйте двойную кавычку для идентификатора и одну одинарную кавычку внутри:

 SELECT 'Test 3' AS "O'Connell";

 O'Connell
-----------
 Test 3
 

Комментарии:

1. ОК. А когда я использую поле в своем запросе, например SELECT field AS "O'Connell" FROM table; ?

2. @GeoGyro да, как и для любого другого псевдонима 🙂

3. За исключением того, что ответ будет неудачным, если 'Test 3' это столбец в таблице. Идентификаторы должны быть в двойных кавычках. Пожалуйста, пересмотрите свой ответ, чтобы он был правильным.

4. @AdrianKlaver, как и в вопросе, 'test 3' — это строка, константа, если хотите, которая выбрана в качестве столбца. У этой колонки должен быть псевдоним, и мой ответ прекрасно подходит для этого пункта.

5. @GeoGyro вы можете обмануть (не слишком яркий) анализатор цветов, добавив одну кавычку в комментариях после псевдонима select myfield as "o'connor" /*'*/, myOtherField from...