×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

2.6.4. Строковые функции и операторы

2.6.4.1. format

В данном разделе описываются функции и операторы, предназначенные для анализа и обработки строковых значений. Под строками в данном контексте понимаются значения типов character, character varying, и text. За исключением особо оговоренных случаев, данные функции и операторы определены для приема и возврата значений типа text. Они будут взаимозаменяемо принимать character varying аргументы. Значения типа character будут преобразованы к типу text перед применением функции или оператора, что приводит к удалению всех завершающих пробелов в character значении.

SQL определяет ряд строковых функций, в которых для разделения аргументов используются ключевые слова, а не запятые. Подробные сведения приведены в Таблица 2.6.9. Digital Q.DataBase также предоставляются версии данных функций, использующие стандартный синтаксис вызова функций (см. Таблица 2.6.10).

Примечание

Оператор конкатенации строк (||) принимает входные данные нестроковых типов при условии, что по крайней мере один входной аргумент имеет строковый тип, как показано в Таблица 2.6.9. В остальных случаях для обеспечения поддержки нестроковых входных данных может использоваться явное приведение к text , позволяющее принимать входные данные нестроковых типов.

Таблица 2.6.9. Строковые функции и операторы SQL

Функция/оператор

Описание

Примеры

text || texttext

Выполняет конкатенацию двух строк.

'Post' || 'greSQL'PostgreSQL

text || anynonarraytext

anynonarray || texttext

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

'Value: ' || 42Value: 42

btrim ( string text [, characters text ] ) → text

Удаляет наиболее длинную подстроку, состоящую исключительно из указанных символов, в characters (по умолчанию используется пробел) в начале и в конце строки string.

btrim('xyxtrimyyx', 'xyz')trim

text IS [NOT] [форма] NORMALIZEDboolean

Проверяет, приведена ли строка к указанной форме нормализации Unicode форма. Необязательное форма ключевое слово определяет форма: NFC (по умолчанию), NFD, NFKC, или NFKD. Данное выражение может быть использовано только в том случае, когда кодировкой сервера является UTF8. Обратите внимание, что проверка нормализации с использованием данного выражения зачастую выполняется быстрее, чем повторная нормализация строк, которые уже могут быть нормализованы.

U&'\0061\0308bc' IS NFD NORMALIZEDt

bit_length ( text ) → integer

Возвращает количество бит в строке (в 8 раз больше octet_length).

bit_length('jose')32

char_length ( text ) → integer

character_length ( text ) → integer

Функция возвращает количество символов в строке.

char_length('josé')4

lower ( text ) → text

Данная функция переводит строку в нижний регистр согласно правилам локали базы данных.

lower('TOM')tom

lpad ( string text, length integer [, fill text ] ) → text

Функция дополняет строку string до указанной длины length путем добавления в начало строки символов fill (по умолчанию — пробелов). Если исходная строка string уже длиннее, чем заданное значение length то она усекается справа.

lpad('hi', 5, 'xy')xyxhi

функция ltrim ( string text [, characters text ] ) → text

Удаляет наиболее длинную подстроку, состоящую только из символов, указанных в characters (по умолчанию — пробел), в начале string.

ltrim('zzzytest', 'xyz')test

normalize ( text [, форма ] ) → text

Преобразует строку в указанную форму нормализации Unicode. Необязательное форма ключевое слово определяет форму: NFC (используется по умолчанию), NFD, NFKCили NFKD. Данная функция может быть использована только в том случае, если кодировка сервера — UTF8.

normalize(U&'\0061\0308bc', NFC)U&'\00E4bc'

octet_length ( text ) → integer

Возвращает количество байт в строке.

octet_length('josé')5 (если кодировка сервера — UTF8)

octet_length ( character ) → integer

Данная функция возвращает количество байт в строке. Поскольку данная версия функции принимает тип данных character напрямую, она не удаляет завершающие пробелы.

octet_length('abc '::character(4))4

overlay ( string text PLACING newsubstring text FROM start integer [ FOR count integer ] ) → text

Данная функция заменяет подстроку в string, которая начинается с позиции start, длиной count символов, на подстроку newsubstring. Если count параметр опущен, по умолчанию используется длина из newsubstring.

overlay('Txxxxas' placing 'hom' from 2 for 4)Thomas

position ( substring text IN string text ) → integer

Возвращает первый начальный индекс указанной подстроки substring в string, или ноль, если она отсутствует.

position('om' in 'Thomas')3

rpad ( string text, length integer [, fill text ] ) → text

Функция дополняет строку string до указанной длины length путем добавления символов fill (по умолчанию — пробелов). Если исходная строка string уже длиннее, чем заданное значение length то она усекается.

rpad('hi', 5, 'xy')hixyx

rtrim ( string text [, characters text ] ) → text

Удаляет наиболее длинную подстроку, состоящую только из символов, указанных в characters (по умолчанию пробел) с конца строки string.

rtrim('testxxzx', 'xyz')test

substring ( string text [ FROM start integer ] [ FOR count integer ] ) → text

Данная операция извлекает подстроку из string начиная с указанной позиции с start-го символа, если он задан, и завершая операцию после count символов, если это количество указано. Необходимо указать как минимум один из аргументов start и count.

substring('Thomas' from 2 for 3)hom

substring('Thomas' from 3)omas

substring('Thomas' for 2)Th

substring ( string text FROM pattern text ) → text

Данная операция извлекает первую подстроку, соответствующую регулярному выражению POSIX; см. Раздел 2.6.7.3.

substring('Thomas' from '...$')mas

substring ( string text SIMILAR pattern text ESCAPE escape text ) → text

substring ( string text FROM pattern text FOR escape text ) → text

Извлекает первую подстроку, соответствующую SQL регулярному выражению; см. Раздел 2.6.7.2. Первая форма была определена в стандарте языка SQL:2003; вторая форма присутствовала только в стандарте языка SQL:1999 и должна считаться устаревшей.

substring('Thomas' similar '%#"o_a#"_' escape '#')oma

trim ( [ LEADING | TRAILING | BOTH ] [ characters text ] FROM string text ) → text

Удаляет наиболее длинную подстроку, состоящую только из символов, указанных в characters (по умолчанию пробел) из начало, конец или обе стороны (BOTH используется по умолчанию) из string.

trim(both 'xyz' from 'yxTomxx')Tom

trim ( [ LEADING | TRAILING | BOTH ] [ FROM ] string text [, characters text ] ) → text

Данный синтаксис не является стандартным для trim().

trim(both from 'yxTomxx', 'xyz')Tom

unicode_assigned ( text ) → boolean

Возвращает значение true если всем символам в строке соответствуют кодовые позиции Unicode; false в противном случае. Данная функция может быть использована только в том случае, если кодировка сервера — UTF8.

upper ( text ) → text

Преобразует все символы строки в верхний регистр согласно правилам локали базы данных.

upper('tom')TOM


Дополнительные функции и операторы для обработки строк доступны и перечислены в Таблица 2.6.10. (Некоторые из этих средств используются во внутренних механизмах для реализации оператора SQL-стандартных строковых функций, перечисленных в Таблица 2.6.9.) Также существуют операторы сопоставления с шаблоном, описание которых приведено в Раздел 2.6.7, и операторы для полнотекстового поиска, описанные в Глава 2.9.

Таблица 2.6.10. Прочие строковые функции и операторы

Функция/оператор

Описание

Примеры

text ^@ textboolean

Возвращает логическое значение true, если первая строка начинается со второй строки (эквивалентно функции starts_with() function).

'alphabet' ^@ 'alph't

ascii ( text ) → integer

Возвращает числовой код первого символа аргумента. В UTF8 кодировке возвращает кодовую точку Unicode символа. В других многобайтовых кодировках аргумент должен быть ASCII символ.

ascii('x')120

chr ( integer ) → text

Возвращает символ с заданным кодом. В UTF8 кодировке UTF-8 аргумент рассматривается как кодовая точка Unicode. В других многобайтовых кодировках аргумент должен представлять символ ASCII. ASCII символ. chr(0) не допускается, так как текстовые типы данных не могут хранить этот символ.

chr(65)A

concat ( val1 "any" [, val2 "any" [, ...] ] ) → text

Выполняет объединение текстовых представлений всех переданных аргументов. Аргументы со значением NULL игнорируются.

concat('abcde', 2, NULL, 22)abcde222

concat_ws ( sep text, val1 "any" [, val2 "any" [, ...] ] ) → text

Выполняет конкатенацию всех аргументов, кроме первого, с использованием разделителей. При этом первый аргумент используется в качестве строки разделителя и не должен иметь значение NULL. Прочие аргументы со значением NULL игнорируются.

concat_ws(',', 'abcde', 2, NULL, 22)abcde,2,22

format ( formatstr text [, аргумент_форматирования "any" [, ...] ] ) → text

Форматирует аргументы в соответствии со строкой форматирования; см. Раздел 2.6.4.1. Данная функция аналогична функции языка C sprintf.

format('Hello%s, %1$s', 'World')HelloWorld, World

initcap ( text ) → text

Преобразует первую букву каждого слова в верхний регистр, а остальные — в нижний. Слова представляют собой последовательности буквенно-цифровых символов, разделенных символами, не являющимися буквенно-цифровыми.

initcap('hi THOMAS')Hi Thomas

left ( string text, n integer ) → text

Возвращает первые n n символов строки; если значение n n отрицательно, возвращаются все символы, кроме последних |n|nсимволов.

left('abcde', 2)ab

длины ( text ) → integer

Возвращает количество символов в строке.

length('jose')4

md5 ( text ) → text

Вычисляет хеш-сумму по алгоритму MD5 хеш-сумма для аргумента; результат возвращается в шестнадцатеричном виде.

md5('abc')900150983cd24fb0​d6963f7d28e17f72

parse_ident ( qualified_identifier text [, strict_mode boolean DEFAULT true ] ) → text[]

Разбивает строку qualified_identifier в массив, состоящий из идентификаторов, при этом кавычки у отдельных идентификаторов удаляются. По умолчанию наличие лишних символов после последнего идентификатора рассматривается как ошибка; однако если второй параметр принимает значение false, то подобные добавочные символы игнорируются. (Такое поведение полезно при синтаксическом анализе имена для таких объектов, как функции.) Обратите внимание, что функция не выполняет усечение слишком длинных идентификаторов. Если требуется усечение, результат можно привести к типу name[].

parse_ident('"SomeSchema".someTable'){SomeSchema,sometable}

pg_client_encoding ( ) → name

Возвращает название текущей кодировки клиентской части.

pg_client_encoding()UTF8

quote_ident ( text ) → text

Возвращает заданную строку, заключенную в кавычки, для использования в качестве идентификатора в строке SQL-запроса. Кавычки добавляются только при необходимости (например, если строка содержит символы, отличные от символов идентификатора, или если она была бы приведена к нижнему регистру). Вложенные кавычки корректно дублируются. См. также Пример 5.6.1.

quote_ident('Foo bar')"Foo bar"

quote_literal ( text ) → text

Функция возвращает заданную строку с соответствующими кавычками для её использования в качестве строкового литерала в строке SQL-запроса. Входящие в состав строки одиночные кавычки и обратные косые черты корректно дублируются. Обратите внимание, что quote_literal функция возвращает значение null, если входной параметр имеет значение null на входе; если аргумент может иметь значение null, quote_nullable часто оказывается более подходящим вариантом. См. также Пример 5.6.1.

quote_literal(E'O\'Reilly')'O''Reilly'

quote_literal ( anyelement ) → text

Функция преобразует заданное значение в текстовый вид, а затем заключает его в кавычки как литерал. Входящие в состав строки одиночные кавычки и обратные косые черты корректно дублируются.

quote_literal(42.5)'42.5'

quote_nullable ( text ) → text

Функция возвращает заданную строку с соответствующими кавычками для её использования в качестве строкового литерала в SQL-операторе, или, если аргумент имеет значение null, возвращает NULL. Входящие в состав строки одиночные кавычки и обратные косые черты корректно дублируются. См. также Пример 5.6.1.

quote_nullable(NULL)NULL

quote_nullable ( anyelement ) → text

Функция преобразует заданное значение в текст и заключает его в кавычки как литерал; или, если аргумент имеет значение null, возвращает NULL. Входящие в состав строки одиночные кавычки и обратные косые черты корректно дублируются.

quote_nullable(42.5)'42.5'

regexp_count ( string text, pattern text [, start integer [, flags text ] ] ) → integer

Возвращает количество совпадений, которые регулярное выражение стандарта POSIX pattern имеет в с string; см. Раздел 2.6.7.3.

regexp_count('123456789012', '\d\d\d', 2)3

regexp_instr ( string text, pattern text [, start integer [, N integer [, endoption integer [, flags text [, subexpr integer ] ] ] ] ] ) → integer

Возвращает позицию в строке, string в которой с N-е совпадение с регулярным выражением стандарта POSIX стандарта POSIX pattern находится, или ноль, если такое совпадение отсутствует; см. Раздел 2.6.7.3.

regexp_instr('ABCDEF', 'c(.)(..)', 1, 1, 0, 'i')3

regexp_instr('ABCDEF', 'c(.)(..)', 1, 1, 0, 'i', 2)5

regexp_like ( string text, pattern text [, flags text ] ) → boolean

Проверяет, имеется ли совпадение с регулярным выражением стандарта POSIX стандарта POSIX pattern встречается внутри string; см. Раздел 2.6.7.3.

regexp_like('HelloWorld', 'world$', 'i')t

regexp_match ( string text, pattern text [, flags text ] ) → text[]

Возвращает подстроки, соответствующие первому совпадению регулярного выражения в стандарте POSIX стандарта POSIX pattern для с string; см. Раздел 2.6.7.3.

regexp_match('foobarbequebaz', '(bar)(beque)'){bar,beque}

regexp_matches ( string text, pattern text [, flags text ] ) → setof text[]

Возвращает подстроки, соответствующие первому совпадению регулярного выражения в стандарте POSIX стандарта POSIX pattern для с string, или подстроки во всех таких совпадениях, если указан g флаг; см. Раздел 2.6.7.3.

regexp_matches('foobarbequebaz', 'ba.', 'g')

 {bar}
 {baz}

regexp_replace ( string text, pattern text, замена text [, start integer ] [, flags text ] ) → text

Заменяет подстроку, соответствующую первому совпадению регулярного выражения в стандарте POSIX pattern, или все такие совпадения соответствует в том случае, если g используется флаг; см. Раздел 2.6.7.3.

regexp_replace('Thomas', '.[mN]a.', 'M')ThM

regexp_replace ( string text, pattern text, замена text, start integer, N integer [, flags text ] ) → text

Заменяет подстроку, представляющую собой N'th совпадение с регулярным выражением POSIX pattern, или все подобные совпадения, если N имеет нулевое значение; см. Раздел 2.6.7.3.

regexp_replace('Thomas', '.', 'X', 3, 2)ThoXas

regexp_split_to_array ( string text, pattern text [, flags text ] ) → text[]

Разбивает строку string с использованием регулярного выражения POSIX в качестве разделителя с возвращением массива результатов; см. Раздел 2.6.7.3.

regexp_split_to_array('hello world', '\s+'){hello,world}

regexp_split_to_table ( string text, pattern text [, flags text ] ) → setof text

Разбивает строку string с использованием регулярного выражения POSIX в качестве разделителя с возвращением набора результатов; см. Раздел 2.6.7.3.

regexp_split_to_table('hello world', '\s+')

 привет
 мир

regexp_substr ( string text, pattern text [, start integer [, N integer [, flags text [, subexpr integer ] ] ] ] ) → text

Возвращает подстроку, входящую в строку, string которая соответствует N-му вхождению регулярного выражения в стандарте POSIX в стандарте POSIX pattern, или NULL если совпадение отсутствует; см. Раздел 2.6.7.3.

regexp_substr('ABCDEF', 'c(.)(..)', 1, 1, 'i')CDEF

regexp_substr('ABCDEF', 'c(.)(..)', 1, 1, 'i', 2)EF

repeat ( string text, количество integer ) → text

Повторяет строку string заданное количество количество раз.

repeat('Pg', 4)PgPgPgPg

replace ( string text, from text, to text ) → text

Заменяет все вхождения в строке string подстроки from на функция substring to.

replace('abcdefabcdef', 'cd', 'XX')abXXefabXXef

reverse ( text ) → text

Меняет порядок символов в строке на обратный.

reverse('abcde')edcba

right ( string text, n integer ) → text

Возвращает последние n n символов строки, либо, если значение n n отрицательно, возвращает все символы, кроме первых n символов |nсимволов.

right('abcde', 2)de

split_part ( string text, разделитель text, n integer ) → text

Разбивает строку string вхождения из разделитель и возвращает значение с n'-е поле (нумерация начинается с единицы), либо, если значение n n отрицательно, возвращаются поле |n|-е поле с конца.

split_part('abc~@~def~@~ghi', '~@~', 2)def

split_part('abc,def,ghi,jkl', ',', -2)ghi

starts_with ( string text, prefix text ) → boolean

Возвращает значение true, если string начинается с prefix.

starts_with('alphabet', 'alph')t

string_to_array ( string text, разделитель text [, null_string text ] ) → text[]

Разделяет строку string вхождения из разделитель и формирует результирующие поля в text массив. Если разделитель является NULL, каждый символ в строке string будет преобразован в отдельный элемент массива. Если разделитель является пустой строкой, то входное значение с string рассматривается как одно поле. Если null_string передан и имеет значение NOT NULL, то поля, соответствующие данной строке, будут заменены на NULL. См. также array_to_string.

string_to_array('xx~~yy~~zz', '~~', 'yy'){xx,NULL,zz}

string_to_table ( string text, разделитель text [, null_string text ] ) → setof text

Разделяет строку string вхождения из разделитель и возвращает полученные поля в виде набора text строк. Если разделитель является NULL, каждый символ в строке string будет преобразован в отдельной строкой результирующего набора. Если разделитель является пустой строкой, то входное значение с string рассматривается как одно поле. Если null_string передан и имеет значение NOT NULL, то поля, соответствующие данной строке, будут заменены на NULL.

string_to_table('xx~^~yy~^~zz', '~^~', 'yy')

 xx
 NULL
 zz

strpos ( string text, substring text ) → integer

Возвращает индекс первого вхождения указанной подстроки substring внутри string, или ноль, если она отсутствует. (Аналогично функции position(substring в string), но при этом используется обратный порядок аргументов.)

strpos('high', 'ig')2

функция substr ( string text, start integer [, count integer ] ) → text

Данная операция извлекает подстроку из string начиная с указанной позиции с start-й символ, с извлечением подстроки заданной count символов, если это количество длины. (Аналогично функции функции substring(string из start в count).)

substr('alphabet', 3)phabet

substr('alphabet', 3, 2)ph

to_ascii ( string text ) → text

to_ascii ( string text, кодировка name ) → text

to_ascii ( string text, кодировка integer ) → text

Выполняет преобразование string до ASCII из другой кодировки, которая может быть указана по имени или номеру. Если кодировка пропущен, то кодировка базы данных принимается по умолчанию (что на практике является единственным практически значимым случаем). Данное преобразование заключается прежде всего в удалении диакритических знаков (акцентов). Преобразование поддерживается только для из LATIN1, LATIN2, LATIN9, и WIN1250 кодировок. (См. unaccent модуль для получения другого, более гибкого решения.)

to_ascii('Karél')Karel

to_bin ( integer ) → text

to_bin ( bigint ) → text

Преобразует число в его эквивалентное двоичное представление в дополнительном коде.

to_bin(2147483647)1111111111111111111111111111111

to_bin(-1234)11111111111111111111101100101110

to_hex ( integer ) → text

to_hex ( bigint ) → text

Преобразует число в эквивалентное шестнадцатеричное значение в дополнительном коде коде.

to_hex(2147483647)7fffffff

to_hex(-1234)fffffb2e

to_oct ( integer ) → text

to_oct ( bigint ) → text

Преобразует число в эквивалентное восьмеричное значение в дополнительном коде коде.

to_oct(2147483647)17777777777

to_oct(-1234)37777775456

translate ( string text, from text, to text ) → text

Заменяет каждый символ в строке, string которая который совпадает с символом в исходном from наборе, на соответствующий символ в целевом to наборе. Если исходный набор from длиннее, чем целевой набор to, лишние символы из исходного набора from удаляются.

translate('12345', '143', 'ax')a2x5

unistr ( text ) → text

Выполняет интерпретацию экранированных последовательностей Unicode в аргументе. Символы Unicode могут быть заданы как \XXXX (4 шестнадцатеричные цифры), \+XXXXXX (6 шестнадцатеричных цифр), \uXXXX (4 шестнадцатеричные цифр) или \UXXXXXXXX (8 шестнадцатеричных цифр). Для указания обратной косой черты следует написать две обратные косые черты. Все остальные символы воспринимаются буквально.

Если кодировка сервера отличается от UTF-8, то определяемая кодовая точка Unicode посредством одной из этих escape-последовательностей, преобразуется в кодировку сервера encoding; в противном случае генерируется ошибка.

Данная функция предоставляет (нестандартную) альтернативу строковым константам с Unicode-последовательностями (см. Раздел 2.1.1.2.3).

unistr('d\0061t\+000061')data

unistr('d\u0061t\U00000061')data


Данный concat, concat_ws и format функции являются вариативными, поэтому значения для конкатенации или форматирования можно передавать в виде массива, помеченного ключевым словом VARIADIC keyword (see Раздел 5.1.5.6). Элементы массива обрабатываются как отдельные обычные аргументы функции. Если вариативный аргумент-массив принимает значение NULL, то concat и concat_ws возвращают оператор IS NULL, однако format интерпретирует значение NULL как массив с нулевым количеством элементов.

См. также агрегатную функцию string_agg in Раздел 2.6.21, а также функций для преобразования между строковыми данными и bytea в Таблица 2.6.13.

2.6.4.1. format #

Функция format формирует выходные данные в соответствии со строкой форматирования в стиле, аналогичном функции языка C sprintf.

format(formatstr text [, аргумент_форматирования "any" [, ...] ])

formatstr — это строка форматирования, которая определяет способ представления полученного результата. Текст в строке форматирования копируется непосредственно в результирующую строку, за исключением тех мест, где спецификаторы формата используются. Спецификаторы формата служат заполнителями в строке, определяя способ форматирования и вставки последующих аргументов функции в результат. Каждый аргумент_форматирования аргумент преобразуется в текстовый вид согласно стандартным правилам вывода для своего типа данных, после чего форматируется и вставляется в результирующую строку в соответствии со спецификатором формата.

Спецификаторы формата начинаются с символа % символ и имеют следующий вид

%[позиция][flags][ширина]тип

где составные поля имеют следующее значение:

позиция (необязательно)

Строка вида n$ в которой n является индексом аргумента, который необходимо вывести. Индекс 1 соответствует первому аргументу после formatstr. Если позиция не пропущен, по умолчанию используется следующий по порядку аргумент.

flags (необязательно)

Дополнительные параметры, определяющие способ форматирования вывода спецификатора. В настоящее время единственным поддерживаемым флагом является знак «минус» (-), который обеспечивает выравнивание вывода спецификатора формата по левому краю. Данный параметр не имеет эффекта, если также не указано ширина поле ширины.

ширина (необязательно)

Определяет минимальное количество символов, используемых для отображения результата спецификатора формата. Вывод дополняется слева или справа (в зависимости от - наличия флага) пробелами, необходимыми для заполнения всей ширины поля. Недостаточная ширина поля не приводит к усечению вывода, а просто игнорируется. Ширина может быть указывается с помощью одного из следующих значений: положительного целого числа; символа звездочки (*) для использования следующего аргумента функции в качестве ширины; или строки вида *n$ для используйте n-й аргумент функции в качестве значения ширины.

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

тип (обязательно)

Тип преобразования, используемый для формирования вывода спецификатора формата. Поддерживаются следующие типы:

  • s форматирует значение аргумента как простую строка. Значение null обрабатывается как пустая строка.

  • I интерпретирует значение аргумента как идентификатор языка SQL, при необходимости заключая его в двойные кавычки. Передача значения null является ошибкой (эквивалентно quote_ident).

  • L заключает значение аргумента в кавычки как литерал языка SQL. Значение null отображается как строка NULL, без кавычки (эквивалентно quote_nullable).

Помимо описанных выше спецификаторов формата, для вывода литерального %% символа может использоваться специальная % последовательность.

Примеры базовых преобразований формата:

SELECT format('Hello %s', 'World');
Результат: Hello World

SELECT format('Testing %s, %s, %s, %%', 'one', 'two', 'three');
Результат: Тестирование: один, два, три, %

SELECT format('INSERT INTO %I VALUES(%L)', 'Foo bar', E'O\'Reilly');
Результат: INSERT INTO "Foo bar" VALUES('O''Reilly')

SELECT format('INSERT INTO %I VALUES(%L)', 'locations', 'C:\Program Files');
Результат: INSERT INTO locations VALUES('C:\Program Files')

Ниже приведены примеры использования ширина полей и - флага:

SELECT format('|%10s|', 'foo');
Результат: |       foo|

SELECT format('|%-10s|', 'foo');
Результат: |foo       |

SELECT format('|%*s|', 10, 'foo');
Результат: |       foo|

SELECT format('|%*s|', -10, 'foo');
Результат: |foo       |

SELECT format('|%-*s|', 10, 'foo');
Результат: |foo       |

SELECT format('|%-*s|', -10, 'foo');
Результат: |foo       |

В данных примерах демонстрируется использование позиция полей:

SELECT format('Testing %3$s, %2$s, %1$s', 'one', 'two', 'three');
Результат: Testing three, two, one

SELECT format('|%*2$s|', 'foo', 10, 'bar');
Результат: |       bar|

SELECT format('|%1$*2$s|', 'foo', 10, 'bar');
Результат: |       foo|

В отличие от стандартной функции языка C, sprintf, Digital Q.DataBase format функция format позволяет смешивать спецификаторы формата с указанием номера позиция сочетание полей в одной и той же строке форматирования. Спецификатор формата без указания номера позиция поле всегда использует аргумент, следующий за последним использованным аргументом. Кроме того, format не требует обязательного использования всех своих аргументов в строке форматирования. Например:

SELECT format('Testing %3$s, %2$s, %s', 'one', 'two', 'three');
Результат: Testing three, two, three

%I и %L Спецификаторы формата особенно полезны для безопасного построения динамических операторов языка SQL. См. Пример 5.6.1.

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

*поля обязательные к заполнению