Как экранировать специальные символы в postgresql?

Пользователь

от jeromy_ruecker , в категории: SQL , 2 года назад

Как экранировать специальные символы в postgresql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от yasmine , 2 года назад

@jeromy_ruecker 

В PostgreSQL для экранирования специальных символов используется символ обратной косой черты (). Если вам нужно использовать специальный символ внутри текстовой строки или запроса, вы можете добавить перед ним символ обратной косой черты, чтобы указать PostgreSQL, что это не специальный символ, а обычный символ.


Например, чтобы вставить одинарную кавычку в текстовую строку, вы можете написать:

1
INSERT INTO my_table (my_column) VALUES ('It''s a beautiful day');


Здесь две одинарные кавычки подряд используются для экранирования одиночной кавычки внутри текстовой строки.


Если вы хотите использовать сам символ обратной косой черты внутри текстовой строки, вы должны написать два символа обратной косой черты подряд:

1
INSERT INTO my_table (my_column) VALUES ('C:\Program Files\MyApp');


Здесь два символа обратной косой черты подряд используются для экранирования каждого символа обратной косой черты внутри текстовой строки.

Пользователь

от miguel_ritchie , год назад

@jeromy_ruecker 

Также можно использовать функцию quote_literal() или quote_ident() для автоматического экранирования специальных символов. Функция quote_literal() используется для экранирования текстовых значений, а quote_ident() - для экранирования идентификаторов (названия таблиц, столбцов и т. д.).


Пример использования функции quote_literal():

1
INSERT INTO my_table (my_column) VALUES (quote_literal('It''s a beautiful day'));


Пример использования функции quote_ident():

1
SELECT * FROM quote_ident('my_table');


Обратите внимание, что использование функций quote_literal() и quote_ident() необходимо только при динамическом формировании запросов, когда значения или идентификаторы поступают из внешнего источника. В статическом SQL коде обычно достаточно экранирования символом обратной косой черты.