Строка фиксированный длины, дополненная пробелами
char(n)
Строка с ограничем максимальной длины
varchar(n)
Строка без ограничения длины
Длина строки в символах
select
length('Привет, мир!')
, char_length('Привет, мир!')
/*
12
12
*/
Длина строки в байтах, зависит от кодировки
select
octet_length('Привет, мир!')
/*
21
*/
Позиция подстроки
select
position('мир' in 'Привет, мир!')
, strpos('Привет, мир!', 'мир')
/*
9
*/
Выделение подстроки
select
substring('Привет, мир!' from 9 for 3)
, substring('Привет, мир!' from 9)
, substr('Привет, мир!', 9, 3)
, substr('Привет, мир!', 9)
/*
мир
, мир
, мир!
, мир!
*/
Подстрока слева или справа
select
left('Привет, мир!', 6)
, right('Привет, мир!', 4)
/*
Привет
, мир!
*/
Замена подстроки
select
overlay('Привет, мир!' placing 'PostgreSQL' from 9 for 3)
/*
Привет, PostgreSQL!
*/
Замена всех вхождений подстроки
select
replace('Привет, мир!', 'р', 'ррр')
/*
Пррривет, миррр!
*/
Замена символов по соответствию
select
translate('Привет, мир!', 'Првтмие', 'Prvtm')
/*
Prvt, mr!
*/
Преобразование регистра (зависит от CTYPE)
select
lower('Привет, мир!')
, upper('Привет, мир!')
, initcap('Привет, мир!')
/*
привет, мир!
ПРИВЕТ, МИР!
Привет, Мир!
*/
Отрезание символов с концов строки (по умолчанию — пробелы)
select
trim( leading 'Пр!' from 'Привет, мир!')
, ltrim('Привет, мир!', 'Пр!')
, trim(trailing 'Пр!' from 'Привет, мир!')
, rtrim('Привет, мир!', 'Пр!')
, trim( both 'Пр!' from 'Привет, мир!')
, btrim('Привет, мир!', 'Пр!')
/*
ивет, мир!
, ивет, мир!
, Привет, ми
, Привет, ми
, ивет, ми
, ивет, ми
*/
Дополнение слева или справа (по умолчанию — пробелами)
select
lpad('Привет, мир!', 17, '. ')
, rpad('Привет, мир!', 17, '. ')
/*
. . .Привет, мир!
, Привет, мир!. . .
*/
переворачивает строку
select
reverse('Привет, мир!')
/*
!рим ,тевирП
*/
Склейка строк (произвольное число аргументов)
select
concat('Привет,', ' ', 'мир!')
, 'Привет,' || ' ' || 'мир!'
, concat_ws(', ', 'Привет', 'о', 'мир!')
/*
Привет, мир!
, Привет, мир!
, Привет, о, мир!
*/
string_agg +++
Агрегация строк
select
string_agg(s, ', ' order by id)
from (
values
(2,'мир!'),
(1,'Привет')
) v(id,s)
/*
Привет, мир!
*/
repeat +++
Повторение строки
select
repeat('Привет', 2)
/*
ПриветПривет
*/
Символ по коду (зависит от кодировки)
select
chr(34)
/*
"
*/
Представление строки в виде идентификатора
select
quote_ident('id')
, quote_ident('foo bar')
Ппредставление в виде строкового литерала
SELECT
quote_literal('id')
, quote_nullable('id')
, quote_literal($$What's up?$$)
, quote_nullable($$What's up?$$)
, quote_literal(null)
, quote_nullable(null)
/*
'id'
, 'id'
, 'What''s up?'
, 'What''s up?'
, null
, null
*/
Форматированный текст
select
format('Привет, %s!', 'мир')
, format('UPDATE %I SET s = %L', 'tbl', $$What's up?$$)
, 'UPDATE '||quote_ident('tbl')||' SET s = '||quote_nullable($$What's up?$$)
/*
Привет, мир!
, UPDATE tbl SET s = 'What''s up?'
, UPDATE tbl SET s = 'What''s up?'
*/
Число, дату к строке
Форматирование строк
9 цифра
0 цифра с ведущим нулем
. - (точка) - десятичная точка
, - (разделитель) разделитель разрядов
G - разделитель разрядов (из локали)
D - точка или запятая (из локали)
RN - римскими цифрами
EEEE - экспоненциальная запись
MI - минус (<0)
PL - плюс (>0)
SG - плюс или минус
FM - без ведущих нулей и пробелов
Форматирование дат
YYYY - год
MM - месяц (01-12)
MON - месяц (сокр.)
MONTH - месяц полностью
DD - день (01-31)
D - номер дня недели (1-7)
DY - день недели (сокр.)
DAY - день недели
HH - час (01-12)
HH24 - час (00-23)
MI - минуты
SS - секунды
TZ - часовой пояс
OF - смещение часового пояса
FM - без ведущих пробелов
TM - перевод для дней и месяцев
select
to_char(3.1416, 'FM99D00')
, to_char(3.1416, 'FM99D000000')
, to_char(56789, '999G999G999')
, to_char(123456789, '999G999G999')
, to_char(123456789, '999G999G999')
/*
3,14
3,141600
56 789
123 456 789
123 456 789
*/
select
to_char(now(), 'DD.MM.YYYY HH24:MI:SSOF')
, to_char(now(), 'FMDD TMmonth YYYY, day')
/*
15.11.2016 11:52:08+03
, 15 ноября 2016, среда
*/