| ÐокÑменÑаÑÐ¸Ñ Ð¿Ð¾ PostgreSQL 9.4.1 | |||
|---|---|---|---|
| ÐÑед. | УÑÐ¾Ð²ÐµÐ½Ñ Ð²ÑÑе | Ðлава 9. ФÑнкÑии и опеÑаÑоÑÑ | След. |
9.4. СÑÑоковÑе ÑÑнкÑии и опеÑаÑоÑÑ
Ð ÑÑом Ñазделе опиÑÐ°Ð½Ñ ÑÑнкÑии и опеÑаÑоÑÑ Ð´Ð»Ñ ÑабоÑÑ Ñ ÑекÑÑовÑми ÑÑÑоками. Ðод ÑÑÑоками в данном конÑекÑÑе подÑазÑмеваÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ñипов character, character varying и text. ÐÑли не оÑмеÑено обÑаÑное, вÑе нижепеÑеÑиÑленнÑе ÑÑнкÑии ÑабоÑаÑÑ Ñо вÑеми ÑÑими Ñипами, Ñ Ð¾ÑÑ Ñ Ñипом character ÑледÑÐµÑ ÑÑиÑÑваÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñе ÑÑÑекÑÑ Ð°Ð²ÑомаÑиÑеÑкого Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑÑок пÑобелами. ÐекоÑоÑÑе из ÑÑÐ¸Ñ ÑÑнкÑий Ñакже поддеÑживаÑÑ Ð±Ð¸ÑовÑе ÑÑÑоки.
Ð SQL опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð½ÐµÑколÑко ÑÑÑоковÑÑ ÑÑнкÑий, в коÑоÑÑÑ Ð°ÑгÑменÑÑ ÑазделÑÑÑÑÑ Ð½Ðµ запÑÑÑми, а клÑÑевÑми Ñловами. Ðни пеÑеÑиÑÐ»ÐµÐ½Ñ Ð² ТаблиÑе 9-6. PostgreSQL Ñакже пÑедоÑÑавлÑÐµÑ Ð²Ð°ÑианÑÑ ÑÑÐ¸Ñ ÑÑнкÑий Ñ ÑинÑакÑиÑом, обÑÑнÑм Ð´Ð»Ñ ÑÑнкÑий (Ñм. ТаблиÑÑ 9-7).
ÐамеÑание: Ðо веÑÑии 8.3 в PostgreSQL ÑÑи ÑÑнкÑии Ñакже пÑозÑаÑно пÑинимали знаÑÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð½Ðµ ÑÑÑоковÑÑ Ñипов, неÑвно пÑÐ¸Ð²Ð¾Ð´Ñ ÑÑи знаÑÐµÐ½Ð¸Ñ Ðº ÑÐ¸Ð¿Ñ text. СейÑÐ°Ñ Ñакие пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸ÑклÑÑенÑ, Ñак как они ÑаÑÑо пÑиводили к неожиданнÑм ÑезÑлÑÑаÑам. Ðднако опеÑаÑÐ¾Ñ ÐºÐ¾Ð½ÐºÐ°ÑенаÑии ÑÑÑок (||) по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ðµ ÑолÑко ÑÑÑоковÑе даннÑе, еÑли Ñ Ð¾ÑÑ Ð±Ñ Ð¾Ð´Ð¸Ð½ аÑгÑÐ¼ÐµÐ½Ñ Ð¸Ð¼ÐµÐµÑ ÑÑÑоковÑй Ñип, как показано в ТаблиÑе 9-6. Ðо вÑÐµÑ Ð¾ÑÑалÑнÑÑ ÑлÑÑаÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð²ÑоÑÐµÐ½Ð¸Ñ Ð¿ÑедÑдÑÑего Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑебÑеÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ñвное пÑеобÑазование в text.
ТаблиÑа 9-6. СÑÑоковÑе ÑÑнкÑии и опеÑаÑоÑÑ ÑзÑка SQL
| ФÑнкÑÐ¸Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание | ÐÑÐ¸Ð¼ÐµÑ | РезÑлÑÑÐ°Ñ |
|---|---|---|---|---|
| string || string | text | ÐонкаÑенаÑÐ¸Ñ ÑÑÑок | 'Post' || 'greSQL' | PostgreSQL |
| string || не string или не string || string | text | ÐонкаÑенаÑÐ¸Ñ ÑÑÑок Ñ Ð¾Ð´Ð½Ð¸Ð¼ не ÑÑÑоковÑм опеÑандом | 'Value: ' || 42 | Value: 42 |
bit_length(string) | int | ЧиÑло Ð±Ð¸Ñ Ð² ÑÑÑоке | bit_length('jose') | 32 |
char_length(string) или character_length(string) | int | ЧиÑло Ñимволов в ÑÑÑоке | char_length('jose') | 4 |
lower(string) | text | ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑÑÑоки в нижний ÑегиÑÑÑ | lower('TOM') | tom |
octet_length(string) | int | ЧиÑло Ð±Ð°Ð¹Ñ Ð² ÑÑÑоке | octet_length('jose') | 4 |
overlay(string placing string from int [for int]) | text | ÐаменÑÐµÑ Ð¿Ð¾Ð´ÑÑÑÐ¾ÐºÑ | overlay('Txxxxas' placing 'hom' from 2 for 4) | Thomas |
position(substring in string) | int | Ðоложение Ñказанной подÑÑÑоки | position('om' in 'Thomas') | 3 |
substring(string [from int] [for int]) | text | ÐÐ·Ð²Ð»ÐµÐºÐ°ÐµÑ Ð¿Ð¾Ð´ÑÑÑÐ¾ÐºÑ | substring('Thomas' from 2 for 3) | hom |
substring(string from Ñаблон) | text | ÐÐ·Ð²Ð»ÐµÐºÐ°ÐµÑ Ð¿Ð¾Ð´ÑÑÑокÑ, ÑооÑвеÑÑÑвÑÑÑÑÑ ÑегÑлÑÑÐ½Ð¾Ð¼Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑÑиле POSIX. ÐодÑобно ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ð² Разделе 9.7. | substring('Thomas' from '...$') | mas |
substring(string from Ñаблон for ÑпеÑÑимвол) | text | ÐÐ·Ð²Ð»ÐµÐºÐ°ÐµÑ Ð¿Ð¾Ð´ÑÑÑокÑ, ÑооÑвеÑÑÑвÑÑÑÑÑ ÑегÑлÑÑÐ½Ð¾Ð¼Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑÑиле SQL. ÐодÑобно ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ð² Разделе 9.7. | substring('Thomas' from '%#"o_a#"_' for '#') | oma |
trim([leading | trailing | both] [characters] from string) | text | УдалÑÐµÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑÑÑ Ð¿Ð¾Ð´ÑÑÑокÑ, ÑодеÑжаÑÑÑ ÑолÑко ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ characters (по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÑобелÑ), Ñ Ð½Ð°Ñала, Ñ ÐºÐ¾Ð½Ñа или Ñ Ð¾Ð±ÐµÐ¸Ñ ÑÑоÑон ÑÑÑоки string | trim(both 'x' from 'xTomxx') | Tom |
trim([leading | trailing | both] [from] string [, characters] ) | text | ÐеÑÑандаÑÑÐ½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ trim() | trim(both from 'xTomxx', 'x') | Tom |
upper(string) | text | ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑÑÑоки в веÑÑ Ð½Ð¸Ð¹ ÑегиÑÑÑ | upper('tom') | TOM |
ÐÑоме ÑÑого, в PostgreSQL еÑÑÑ Ð¸ дÑÑгие ÑÑнкÑии Ð´Ð»Ñ ÑабоÑÑ Ñо ÑÑÑоками, пеÑеÑиÑленнÑе в ТаблиÑе 9-7. ÐекоÑоÑÑе из Ð½Ð¸Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð² каÑеÑÑве внÑÑÑенней ÑеализаÑии ÑÑандаÑÑнÑÑ ÑÑÑоковÑÑ ÑÑнкÑий SQL, пÑиведÑннÑÑ Ð² ТаблиÑе 9-6.
ТаблиÑа 9-7. ÐÑÑгие ÑÑÑоковÑе ÑÑнкÑии
| ФÑнкÑÐ¸Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание | ÐÑÐ¸Ð¼ÐµÑ | РезÑлÑÑÐ°Ñ |
|---|---|---|---|---|
ascii(string) | int | ÐозвÑаÑÐ°ÐµÑ ASCII-код пеÑвого Ñимвола аÑгÑменÑа. ÐÐ»Ñ UTF8 возвÑаÑÐ°ÐµÑ ÐºÐ¾Ð´ Ñимвола в Unicode. ÐÐ»Ñ Ð´ÑÑÐ³Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð±Ð°Ð¹ÑнÑÑ ÐºÐ¾Ð´Ð¸Ñовок аÑгÑÐ¼ÐµÐ½Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ ASCII-Ñимволом. | ascii('x') | 120 |
btrim(string text [, characters text]) | text | УдалÑÐµÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑÑÑ Ð¿Ð¾Ð´ÑÑÑокÑ, ÑоÑÑоÑÑÑÑ ÑолÑко из Ñимволов characters (по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ñобелов), Ñ Ð½Ð°Ñала и Ñ ÐºÐ¾Ð½Ñа ÑÑÑоки string | btrim('xyxtrimyyx', 'xy') | trim |
chr(int) | text | ÐозвÑаÑÐ°ÐµÑ Ñимвол Ñ Ð´Ð°Ð½Ð½Ñм кодом. ÐÐ»Ñ UTF8 аÑгÑÐ¼ÐµÐ½Ñ Ð²Ð¾ÑпÑинимаеÑÑÑ ÐºÐ°Ðº код Ñимвола Unicode, а Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ ÐºÐ¾Ð´Ð¸Ñовок он должен ÑказÑваÑÑ Ð½Ð° ASCII-Ñимвол. Ðод 0 (NULL) не допÑÑкаеÑÑÑ, Ñак как байÑÑ Ñ Ð½ÑлевÑм кодом в ÑекÑÑовÑÑ ÑÑÑÐ¾ÐºÐ°Ñ ÑÐ¾Ñ ÑаниÑÑ Ð½ÐµÐ»ÑзÑ. | chr(65) | A |
concat(str "any" [, str "any" [, ...] ]) | text | СоединÑÐµÑ ÑекÑÑовÑе пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²ÑÐµÑ Ð°ÑгÑменÑов, игноÑиÑÑÑ NULL. | concat('abcde', 2, NULL, 22) | abcde222 |
concat_ws(sep text, str "any" [, str "any" [, ...] ]) | text | СоединÑÐµÑ Ð²Ñе аÑгÑменÑÑ, кÑоме пеÑвого, ÑеÑез ÑазделиÑелÑ, игноÑиÑÑÑ Ð°ÑгÑменÑÑ NULL. РазделиÑÐµÐ»Ñ ÑказÑваеÑÑÑ Ð² пеÑвом аÑгÑменÑе. | concat_ws(',', 'abcde', 2, NULL, 22) | abcde,2,22 |
convert(string bytea, src_encoding name, dest_encoding name) | bytea | ÐÑеобÑазÑÐµÑ ÑÑÑÐ¾ÐºÑ string из кодиÑовки src_encoding в dest_encoding. ÐеÑÐµÐ´Ð°Ð½Ð½Ð°Ñ ÑÑÑока должна бÑÑÑ Ð´Ð¾Ð¿ÑÑÑимой Ð´Ð»Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð¹ кодиÑовки. ÐÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ CREATE CONVERSION. ÐÑе вÑÑÑоеннÑе пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÐµÑеÑиÑÐ»ÐµÐ½Ñ Ð² ТаблиÑе 9-8. | convert('text_in_utf8'â, 'UTF8', 'LATIN1') | ÑÑÑока text_in_utf8, пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð² кодиÑовке Latin-1 (ISO 8859-1) |
convert_from(string bytea, src_encoding name) | text | ÐÑеобÑазÑÐµÑ ÑÑÑÐ¾ÐºÑ string из кодиÑовки src_encoding в кодиÑÐ¾Ð²ÐºÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐеÑÐµÐ´Ð°Ð½Ð½Ð°Ñ ÑÑÑока должна бÑÑÑ Ð´Ð¾Ð¿ÑÑÑимой Ð´Ð»Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð¹ кодиÑовки. | convert_from('text_in_utf8'â, 'UTF8') | ÑÑÑока text_in_utf8, пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð² кодиÑовке ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ |
convert_to(string text, dest_encoding name) | bytea | ÐÑеобÑазÑÐµÑ ÑÑÑÐ¾ÐºÑ Ð² кодиÑÐ¾Ð²ÐºÑ dest_encoding. | convert_to('некоÑоÑÑй ÑекÑÑ', 'UTF8') | некоÑоÑÑй ÑекÑÑ, пÑедÑÑавленнÑй в кодиÑовке UTF8 |
decode(string text, format text) | bytea | ÐолÑÑÐ°ÐµÑ Ð´Ð²Ð¾Ð¸ÑнÑе даннÑе из ÑекÑÑового пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² string. ÐнаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа format Ñе же, ÑÑо и Ð´Ð»Ñ ÑÑнкÑии encode. | decode('MTIzAAE=', 'base64') | \x3132330001 |
encode(data bytea, format text) | text | ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð´Ð²Ð¾Ð¸ÑнÑе даннÑе в ÑекÑÑовое пÑедÑÑавление в одном из ÑоÑмаÑов: base64, hex, escape. ФоÑÐ¼Ð°Ñ escape пÑеобÑазÑÐµÑ Ð½ÑлевÑе байÑÑ Ð¸ байÑÑ Ñ 1 в ÑÑаÑÑем биÑе в воÑÑмеÑиÑнÑе поÑледоваÑелÑноÑÑи \nnn и дÑблиÑÑÐµÑ Ð¾Ð±ÑаÑнÑÑ ÐºÐ¾ÑÑÑ ÑеÑÑÑ. | encode(E'123â\\000â\\001', 'base64') | MTIzAAE= |
format(formatstr text [, formatarg "any" [, ...] ]) | text | ФоÑмаÑиÑÑÐµÑ Ð°ÑгÑÐ¼ÐµÐ½Ñ Ð² ÑооÑвеÑÑÑвии Ñо ÑÑÑокой ÑоÑмаÑа. ÐÑа ÑÑнкÑÐ¸Ñ ÑабоÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾ sprintf в ÑзÑке C. См. ÐодÑаздел 9.4.1. | format('Hello %s, %1$s', 'World') | Hello World, World |
initcap(string) | text | ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð¿ÐµÑвÑÑ Ð±ÑÐºÐ²Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñлова в ÑÑÑоке в веÑÑ Ð½Ð¸Ð¹ ÑегиÑÑÑ, а оÑÑалÑнÑе — в нижний. Словами ÑÑиÑаÑÑÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑи алÑавиÑно-ÑиÑÑовÑÑ Ñимволов, ÑазделÑннÑе лÑбÑми дÑÑгими Ñимволами. | initcap('hi THOMAS') | Hi Thomas |
left(str text, n int) | text | ÐозвÑаÑÐ°ÐµÑ Ð¿ÐµÑвÑе n Ñимволов в ÑÑÑоке. Ðогда n менÑÑе нÑлÑ, возвÑаÑаÑÑÑÑ Ð²Ñе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ñлева, кÑоме поÑÐ»ÐµÐ´Ð½Ð¸Ñ |n|. | left('abcde', 2) | ab |
length(string) | int | ЧиÑло Ñимволов в ÑÑÑоке string | length('jose') | 4 |
length(string bytea, encoding name ) | int | ЧиÑло Ñимволов, коÑоÑÑе ÑодеÑÐ¶Ð¸Ñ ÑÑÑока string в заданной кодиÑовке encoding. ÐеÑÐµÐ´Ð°Ð½Ð½Ð°Ñ ÑÑÑока должна бÑÑÑ Ð´Ð¾Ð¿ÑÑÑимой в ÑÑой кодиÑовке. | length('jose', 'UTF8') | 4 |
lpad(string text, length int [, fill text]) | text | ÐополнÑÐµÑ ÑÑÑÐ¾ÐºÑ string Ñлева до Ð´Ð»Ð¸Ð½Ñ length Ñимволами fill (по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ñобелами). ÐÑли длина ÑÑÑоки Ñже болÑÑе заданной, она обÑезаеÑÑÑ ÑпÑава. | lpad('hi', 5, 'xy') | xyxhi |
ltrim(string text [, characters text]) | text | УдалÑÐµÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑÑÑ Ð¿Ð¾Ð´ÑÑÑокÑ, ÑодеÑжаÑÑÑ ÑолÑко ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ characters (по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÑобелÑ), Ñ Ð½Ð°Ñала ÑÑÑоки string | ltrim('zzzytrim', 'xyz') | trim |
md5(string) | text | ÐÑÑиÑлÑÐµÑ MD5-Ñ ÐµÑ ÑÑÑоки string и возвÑаÑÐ°ÐµÑ ÑезÑлÑÑÐ°Ñ Ð² 16-ÑиÑном виде | md5('abc') | 90015098â3cd24fb0 d6963f7dâ28e17f72 |
pg_client_encoding() | name | ÐозвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ ÑекÑÑей клиенÑÑкой кодиÑовки | pg_client_encoding() | SQL_ASCII |
quote_ident(string text) | text | ÐеÑÐµÐ´Ð°Ð½Ð½Ð°Ñ ÑÑÑока оÑоÑмлÑеÑÑÑ Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² каÑеÑÑве иденÑиÑикаÑоÑа в SQL -опеÑаÑоÑе. ÐÑи Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи иденÑиÑикаÑÐ¾Ñ Ð·Ð°ÐºÐ»ÑÑаеÑÑÑ Ð² кавÑÑки (напÑимеÑ, еÑли он ÑодеÑÐ¶Ð¸Ñ ÑимволÑ, недопÑÑÑимÑе в оÑкÑÑÑом виде, или бÑÐºÐ²Ñ Ð² Ñазном ÑегиÑÑÑе). ÐÑли пеÑÐµÐ´Ð°Ð½Ð½Ð°Ñ ÑÑÑока ÑодеÑÐ¶Ð¸Ñ ÐºÐ°Ð²ÑÑки, они дÑблиÑÑÑÑÑÑ. См. Ñакже ÐÑÐ¸Ð¼ÐµÑ 40-1. | quote_ident('Foo bar') | "Foo bar" |
quote_literal(string text) | text | ÐеÑÐµÐ´Ð°Ð½Ð½Ð°Ñ ÑÑÑока оÑоÑмлÑеÑÑÑ Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² каÑеÑÑве ÑекÑÑовой ÑÑÑоки в SQL-опеÑаÑоÑе. ÐклÑÑÑннÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð°Ð¿Ð¾ÑÑÑÐ¾Ñ Ð¸ обÑаÑÐ½Ð°Ñ ÐºÐ¾ÑÐ°Ñ ÑеÑÑа пÑи ÑÑом дÑблиÑÑÑÑÑÑ. ÐамеÑÑÑе, ÑÑо quote_literal возвÑаÑÐ°ÐµÑ NULL, когда на вÑ
од ей пеÑедаÑÑÑÑ ÑÑÑока NULL; еÑли же нÑжно полÑÑиÑÑ Ð¿ÑедÑÑавление и Ñакого аÑгÑменÑа, лÑÑÑе иÑполÑзоваÑÑ quote_nullable. См. Ñакже ÐÑÐ¸Ð¼ÐµÑ 40-1. | quote_literal(E'O\'Reilly') | 'O''Reilly' |
quote_literal(value anyelement) | text | ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ðµ знаÑение в ÑекÑÑовÑй вид и заклÑÑÐ°ÐµÑ Ð² апоÑÑÑоÑÑ ÐºÐ°Ðº ÑекÑÑовÑÑ ÑÑÑокÑ. Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ Ð°Ð¿Ð¾ÑÑÑÐ¾Ñ Ð¸ обÑаÑÐ½Ð°Ñ ÐºÐ¾ÑÐ°Ñ ÑеÑÑа пÑи ÑÑом дÑблиÑÑÑÑÑÑ. | quote_literal(42.5) | '42.5' |
quote_nullable(string text) | text | ÐеÑÐµÐ´Ð°Ð½Ð½Ð°Ñ ÑÑÑока оÑоÑмлÑеÑÑÑ Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² каÑеÑÑве ÑекÑÑовой ÑÑÑоки в SQL-опеÑаÑоÑе; пÑи ÑÑом Ð´Ð»Ñ Ð°ÑгÑменÑа NULL возвÑаÑаеÑÑÑ ÑÑÑока NULL. Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ Ð°Ð¿Ð¾ÑÑÑÐ¾Ñ Ð¸ обÑаÑÐ½Ð°Ñ ÐºÐ¾ÑÐ°Ñ ÑеÑÑа дÑблиÑÑÑÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñм обÑазом. См. Ñакже ÐÑÐ¸Ð¼ÐµÑ 40-1. | quote_nullable(NULL) | NULL |
quote_nullable(value anyelement) | text | ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ðµ знаÑение в ÑекÑÑовÑй вид и заклÑÑÐ°ÐµÑ Ð² апоÑÑÑоÑÑ ÐºÐ°Ðº ÑекÑÑовÑÑ ÑÑÑокÑ, пÑи ÑÑом Ð´Ð»Ñ Ð°ÑгÑменÑа NULL возвÑаÑаеÑÑÑ ÑÑÑока NULL. Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ Ð°Ð¿Ð¾ÑÑÑÐ¾Ñ Ð¸ обÑаÑÐ½Ð°Ñ ÐºÐ¾ÑÐ°Ñ ÑеÑÑа дÑблиÑÑÑÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñм обÑазом. | quote_nullable(42.5) | '42.5' |
regexp_matchesâ(string text, pattern text [, flags text]) | setof text[] | ÐозвÑаÑÐ°ÐµÑ Ð²Ñе Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑие подÑÑÑоки, полÑÑеннÑе в ÑезÑлÑÑаÑе пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑÑиле POSIX к string. ÐодÑобноÑÑи опиÑÐ°Ð½Ñ Ð² ÐодÑазделе 9.7.3. | regexp_matchesâ('foobarâbequebaz', '(bar)(beque)') | {bar,beque} |
regexp_replaceâ(string text, pattern text, replacement text [, flags text]) | text | ÐаменÑÐµÑ Ð¿Ð¾Ð´ÑÑÑоки, ÑооÑвеÑÑÑвÑÑÑие Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ ÑегÑлÑÑÐ½Ð¾Ð¼Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑÑиле POSIX. ÐодÑобноÑÑи опиÑÐ°Ð½Ñ Ð² ÐодÑазделе 9.7.3. | regexp_replace('Thomas', '.[mN]a.', 'M') | ThM |
regexp_split_to_array(string text, pattern text [, flags text ]) | text[] | РазделÑÐµÑ ÑодеÑжимое string на ÑлеменÑÑ, иÑполÑзÑÑ Ð² каÑеÑÑве ÑазделиÑÐµÐ»Ñ ÑегÑлÑÑное вÑÑажение POSIX. ÐодÑобноÑÑи опиÑÐ°Ð½Ñ Ð² ÐодÑазделе 9.7.3. | regexp_split_to_array('hello world', E'\\s+') | {hello,world} |
regexp_split_to_table(string text, pattern text [, flags text]) | setof text | РазделÑÐµÑ ÑодеÑжимое string на ÑлеменÑÑ, иÑполÑзÑÑ Ð² каÑеÑÑве ÑазделиÑÐµÐ»Ñ ÑегÑлÑÑное вÑÑажение POSIX. ÐодÑобноÑÑи опиÑÐ°Ð½Ñ Ð² ÐодÑазделе 9.7.3. | regexp_split_to_table('hello world', E'\\s+') | hello world (2 ÑÑÑоки) |
repeat(string text, number int) | text | ÐовÑоÑÑÐµÑ ÑодеÑжимое string Ñказанное ÑиÑло (number) Ñаз | repeat('Pg', 4) | PgPgPgPg |
replace(string text, from text, to text) | text | ÐаменÑÐµÑ Ð²Ñе Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð² string подÑÑÑоки from подÑÑÑокой to | replace('abcdefabcdef', 'cd', 'XX') | abXXefabXXef |
reverse(str) | text | ÐозвÑаÑÐ°ÐµÑ Ð¿ÐµÑевÑÑнÑÑÑÑ ÑÑÑÐ¾ÐºÑ | reverse('abcde') | edcba |
right(str text, n int) | text | ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾Ñледние n Ñимволов в ÑÑÑоке. Ðогда n менÑÑе нÑлÑ, возвÑаÑаÑÑÑÑ Ð²Ñе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑпÑава, кÑоме пеÑвÑÑ |n|. | right('abcde', 2) | de |
rpad(string text, length int [, fill text]) | text | ÐополнÑÐµÑ ÑÑÑÐ¾ÐºÑ string ÑпÑава до Ð´Ð»Ð¸Ð½Ñ length Ñимволами fill (по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ñобелами). ÐÑли длина ÑÑÑоки Ñже болÑÑе заданной, она обÑезаеÑÑÑ. | rpad('hi', 5, 'xy') | hixyx |
rtrim(string text [, characters text]) | text | УдалÑÐµÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑÑÑ Ð¿Ð¾Ð´ÑÑÑокÑ, ÑодеÑжаÑÑÑ ÑолÑко ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ characters (по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÑобелÑ), Ñ ÐºÐ¾Ð½Ñа ÑÑÑоки string | rtrim('trimxxxx', 'x') | trim |
split_part(string text, delimiter text, field int) | text | РазделÑÐµÑ ÑÑÑÐ¾ÐºÑ string по ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ delimiter и возвÑаÑÐ°ÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿Ð¾ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð½Ð¾Ð¼ÐµÑÑ (ÑÑиÑÐ°Ñ Ñ 1) | split_part('abc~@~defâ~@~ghi', '~@~', 2) | def |
strpos(string, substring) | int | ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ñказанной подÑÑÑоки (подобно position(substring in string), но Ñ Ð´ÑÑгим поÑÑдком аÑгÑменÑов) | strpos('high', 'ig') | 2 |
substr(string, from [, count]) | text | ÐÐ·Ð²Ð»ÐµÐºÐ°ÐµÑ Ð¿Ð¾Ð´ÑÑÑÐ¾ÐºÑ (подобно substring(string from from for count)) | substr('alphabet', 3, 2) | ph |
to_ascii(string text [, encoding text]) | text | ÐÑеобÑазÑÐµÑ string в ASCII из кодиÑовки encoding (поддеÑживаÑÑÑÑ ÑолÑко LATIN1, LATIN2, LATIN9 и WIN1250) | to_ascii('Karel') | Karel |
to_hex(number int или bigint) | text | ÐÑеобÑазÑÐµÑ ÑиÑло number в 16-ÑиÑнÑй вид | to_hex(2147483647) | 7fffffff |
translate(string text, from text, to text) | text | ÐаменÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð² string, найденнÑе в набоÑе from, на ÑооÑвеÑÑÑвÑÑÑие ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð² множеÑÑве to. ÐÑли ÑÑÑока from длиннее to, найденнÑе в иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑÑоке лиÑние ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ from ÑдалÑÑÑÑÑ. | translate('12345', '143', 'ax') | a2x5 |
ФÑнкÑии concat, concat_ws и format пÑинимаÑÑ Ð¿ÐµÑеменное ÑиÑло аÑгÑменÑов, Ñак ÑÑо им Ð´Ð»Ñ Ð¾Ð±ÑÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пеÑедаваÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² виде маÑÑива, помеÑенного клÑÑевÑм Ñловом VARIADIC (Ñм. ÐодÑаздел 35.4.5). ÐлеменÑÑ Ñакого маÑÑива обÑабаÑÑваÑÑÑÑ, как еÑли Ð±Ñ Ð¾Ð½Ð¸ бÑли обÑÑнÑми аÑгÑменÑами ÑÑнкÑии. ÐÑли вмеÑÑо маÑÑива в ÑооÑвеÑÑÑвÑÑÑем аÑгÑменÑе пеÑедаÑÑÑÑ NULL, ÑÑнкÑии concat и concat_ws возвÑаÑаÑÑ NULL, а format воÑпÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ NULL как маÑÑив нÑлевого ÑазмеÑа.
См. Ñакже агÑегаÑнÑÑ ÑÑнкÑÐ¸Ñ string_agg в Разделе 9.20.
ТаблиÑа 9-8. ÐÑÑÑоеннÑе пÑеобÑазованиÑ
| ÐÐ¼Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ [a] | ÐÑÑ Ð¾Ð´Ð½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка | Ð¦ÐµÐ»ÐµÐ²Ð°Ñ ÐºÐ¾Ð´Ð¸Ñовка |
|---|---|---|
| ascii_to_mic | SQL_ASCII | MULE_INTERNAL |
| ascii_to_utf8 | SQL_ASCII | UTF8 |
| big5_to_euc_tw | BIG5 | EUC_TW |
| big5_to_mic | BIG5 | MULE_INTERNAL |
| big5_to_utf8 | BIG5 | UTF8 |
| euc_cn_to_mic | EUC_CN | MULE_INTERNAL |
| euc_cn_to_utf8 | EUC_CN | UTF8 |
| euc_jp_to_mic | EUC_JP | MULE_INTERNAL |
| euc_jp_to_sjis | EUC_JP | SJIS |
| euc_jp_to_utf8 | EUC_JP | UTF8 |
| euc_kr_to_mic | EUC_KR | MULE_INTERNAL |
| euc_kr_to_utf8 | EUC_KR | UTF8 |
| euc_tw_to_big5 | EUC_TW | BIG5 |
| euc_tw_to_mic | EUC_TW | MULE_INTERNAL |
| euc_tw_to_utf8 | EUC_TW | UTF8 |
| gb18030_to_utf8 | GB18030 | UTF8 |
| gbk_to_utf8 | GBK | UTF8 |
| iso_8859_10_to_utf8 | LATIN6 | UTF8 |
| iso_8859_13_to_utf8 | LATIN7 | UTF8 |
| iso_8859_14_to_utf8 | LATIN8 | UTF8 |
| iso_8859_15_to_utf8 | LATIN9 | UTF8 |
| iso_8859_16_to_utf8 | LATIN10 | UTF8 |
| iso_8859_1_to_mic | LATIN1 | MULE_INTERNAL |
| iso_8859_1_to_utf8 | LATIN1 | UTF8 |
| iso_8859_2_to_mic | LATIN2 | MULE_INTERNAL |
| iso_8859_2_to_utf8 | LATIN2 | UTF8 |
| iso_8859_2_to_windows_1250 | LATIN2 | WIN1250 |
| iso_8859_3_to_mic | LATIN3 | MULE_INTERNAL |
| iso_8859_3_to_utf8 | LATIN3 | UTF8 |
| iso_8859_4_to_mic | LATIN4 | MULE_INTERNAL |
| iso_8859_4_to_utf8 | LATIN4 | UTF8 |
| iso_8859_5_to_koi8_r | ISO_8859_5 | KOI8R |
| iso_8859_5_to_mic | ISO_8859_5 | MULE_INTERNAL |
| iso_8859_5_to_utf8 | ISO_8859_5 | UTF8 |
| iso_8859_5_to_windows_1251 | ISO_8859_5 | WIN1251 |
| iso_8859_5_to_windows_866 | ISO_8859_5 | WIN866 |
| iso_8859_6_to_utf8 | ISO_8859_6 | UTF8 |
| iso_8859_7_to_utf8 | ISO_8859_7 | UTF8 |
| iso_8859_8_to_utf8 | ISO_8859_8 | UTF8 |
| iso_8859_9_to_utf8 | LATIN5 | UTF8 |
| johab_to_utf8 | JOHAB | UTF8 |
| koi8_r_to_iso_8859_5 | KOI8R | ISO_8859_5 |
| koi8_r_to_mic | KOI8R | MULE_INTERNAL |
| koi8_r_to_utf8 | KOI8R | UTF8 |
| koi8_r_to_windows_1251 | KOI8R | WIN1251 |
| koi8_r_to_windows_866 | KOI8R | WIN866 |
| koi8_u_to_utf8 | KOI8U | UTF8 |
| mic_to_ascii | MULE_INTERNAL | SQL_ASCII |
| mic_to_big5 | MULE_INTERNAL | BIG5 |
| mic_to_euc_cn | MULE_INTERNAL | EUC_CN |
| mic_to_euc_jp | MULE_INTERNAL | EUC_JP |
| mic_to_euc_kr | MULE_INTERNAL | EUC_KR |
| mic_to_euc_tw | MULE_INTERNAL | EUC_TW |
| mic_to_iso_8859_1 | MULE_INTERNAL | LATIN1 |
| mic_to_iso_8859_2 | MULE_INTERNAL | LATIN2 |
| mic_to_iso_8859_3 | MULE_INTERNAL | LATIN3 |
| mic_to_iso_8859_4 | MULE_INTERNAL | LATIN4 |
| mic_to_iso_8859_5 | MULE_INTERNAL | ISO_8859_5 |
| mic_to_koi8_r | MULE_INTERNAL | KOI8R |
| mic_to_sjis | MULE_INTERNAL | SJIS |
| mic_to_windows_1250 | MULE_INTERNAL | WIN1250 |
| mic_to_windows_1251 | MULE_INTERNAL | WIN1251 |
| mic_to_windows_866 | MULE_INTERNAL | WIN866 |
| sjis_to_euc_jp | SJIS | EUC_JP |
| sjis_to_mic | SJIS | MULE_INTERNAL |
| sjis_to_utf8 | SJIS | UTF8 |
| tcvn_to_utf8 | WIN1258 | UTF8 |
| uhc_to_utf8 | UHC | UTF8 |
| utf8_to_ascii | UTF8 | SQL_ASCII |
| utf8_to_big5 | UTF8 | BIG5 |
| utf8_to_euc_cn | UTF8 | EUC_CN |
| utf8_to_euc_jp | UTF8 | EUC_JP |
| utf8_to_euc_kr | UTF8 | EUC_KR |
| utf8_to_euc_tw | UTF8 | EUC_TW |
| utf8_to_gb18030 | UTF8 | GB18030 |
| utf8_to_gbk | UTF8 | GBK |
| utf8_to_iso_8859_1 | UTF8 | LATIN1 |
| utf8_to_iso_8859_10 | UTF8 | LATIN6 |
| utf8_to_iso_8859_13 | UTF8 | LATIN7 |
| utf8_to_iso_8859_14 | UTF8 | LATIN8 |
| utf8_to_iso_8859_15 | UTF8 | LATIN9 |
| utf8_to_iso_8859_16 | UTF8 | LATIN10 |
| utf8_to_iso_8859_2 | UTF8 | LATIN2 |
| utf8_to_iso_8859_3 | UTF8 | LATIN3 |
| utf8_to_iso_8859_4 | UTF8 | LATIN4 |
| utf8_to_iso_8859_5 | UTF8 | ISO_8859_5 |
| utf8_to_iso_8859_6 | UTF8 | ISO_8859_6 |
| utf8_to_iso_8859_7 | UTF8 | ISO_8859_7 |
| utf8_to_iso_8859_8 | UTF8 | ISO_8859_8 |
| utf8_to_iso_8859_9 | UTF8 | LATIN5 |
| utf8_to_johab | UTF8 | JOHAB |
| utf8_to_koi8_r | UTF8 | KOI8R |
| utf8_to_koi8_u | UTF8 | KOI8U |
| utf8_to_sjis | UTF8 | SJIS |
| utf8_to_tcvn | UTF8 | WIN1258 |
| utf8_to_uhc | UTF8 | UHC |
| utf8_to_windows_1250 | UTF8 | WIN1250 |
| utf8_to_windows_1251 | UTF8 | WIN1251 |
| utf8_to_windows_1252 | UTF8 | WIN1252 |
| utf8_to_windows_1253 | UTF8 | WIN1253 |
| utf8_to_windows_1254 | UTF8 | WIN1254 |
| utf8_to_windows_1255 | UTF8 | WIN1255 |
| utf8_to_windows_1256 | UTF8 | WIN1256 |
| utf8_to_windows_1257 | UTF8 | WIN1257 |
| utf8_to_windows_866 | UTF8 | WIN866 |
| utf8_to_windows_874 | UTF8 | WIN874 |
| windows_1250_to_iso_8859_2 | WIN1250 | LATIN2 |
| windows_1250_to_mic | WIN1250 | MULE_INTERNAL |
| windows_1250_to_utf8 | WIN1250 | UTF8 |
| windows_1251_to_iso_8859_5 | WIN1251 | ISO_8859_5 |
| windows_1251_to_koi8_r | WIN1251 | KOI8R |
| windows_1251_to_mic | WIN1251 | MULE_INTERNAL |
| windows_1251_to_utf8 | WIN1251 | UTF8 |
| windows_1251_to_windows_866 | WIN1251 | WIN866 |
| windows_1252_to_utf8 | WIN1252 | UTF8 |
| windows_1256_to_utf8 | WIN1256 | UTF8 |
| windows_866_to_iso_8859_5 | WIN866 | ISO_8859_5 |
| windows_866_to_koi8_r | WIN866 | KOI8R |
| windows_866_to_mic | WIN866 | MULE_INTERNAL |
| windows_866_to_utf8 | WIN866 | UTF8 |
| windows_866_to_windows_1251 | WIN866 | WIN |
| windows_874_to_utf8 | WIN874 | UTF8 |
| euc_jis_2004_to_utf8 | EUC_JIS_2004 | UTF8 |
| utf8_to_euc_jis_2004 | UTF8 | EUC_JIS_2004 |
| shift_jis_2004_to_utf8 | SHIFT_JIS_2004 | UTF8 |
| utf8_to_shift_jis_2004 | UTF8 | SHIFT_JIS_2004 |
| euc_jis_2004_to_shift_jis_2004 | EUC_JIS_2004 | SHIFT_JIS_2004 |
| shift_jis_2004_to_euc_jis_2004 | SHIFT_JIS_2004 | EUC_JIS_2004 |
| ÐÑимеÑаниÑ: a. Ðмена пÑеобÑазований ÑледÑÑÑ ÑÑандаÑÑной ÑÑ ÐµÐ¼Ðµ именованиÑ. РоÑиÑиалÑÐ½Ð¾Ð¼Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð¹ кодиÑовки, в коÑоÑом вÑе не алÑавиÑно-ÑиÑÑовÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð·Ð°Ð¼ÐµÐ½ÑÑÑÑÑ Ð¿Ð¾Ð´ÑÑÑкиваниÑми, добавлÑеÑÑÑ _to_, а за ним аналогиÑно подгоÑовленное Ð¸Ð¼Ñ Ñелевой кодиÑовки. Таким обÑазом, имена кодиÑовок могÑÑ Ð½Ðµ ÑовпадаÑÑ Ð±ÑквалÑно Ñ Ð¾Ð±ÑепÑинÑÑÑми названиÑми. | ||
9.4.1. format
ФÑнкÑÐ¸Ñ format вÑдаÑÑ ÑекÑÑ, оÑÑоÑмаÑиÑованнÑй в ÑооÑвеÑÑÑвии Ñо ÑÑÑокой ÑоÑмаÑа, подобно ÑÑнкÑии sprintf в C.
format(formatstr text [, formatarg "any" [, ...] ])formatstr — ÑÑÑока, опÑеделÑÑÑаÑ, как бÑÐ´ÐµÑ ÑоÑмаÑиÑоваÑÑÑÑ ÑезÑлÑÑаÑ. ÐбÑÑнÑй ÑекÑÑ Ð² ÑÑÑоке ÑоÑмаÑа непоÑÑедÑÑвенно копиÑÑеÑÑÑ Ð² ÑезÑлÑÑаÑ, за иÑклÑÑением ÑпеÑиÑикаÑоÑов ÑоÑмаÑа. СпеÑиÑикаÑоÑÑ ÑоÑмаÑа пÑедÑÑавлÑÑÑ Ñобой меÑÑозаполниÑели, опÑеделÑÑÑие, как Ð´Ð¾Ð»Ð¶Ð½Ñ ÑоÑмаÑиÑоваÑÑÑÑ Ð¸ вÑводиÑÑÑÑ Ð² ÑезÑлÑÑаÑе аÑгÑменÑÑ ÑÑнкÑии. ÐаждÑй аÑгÑÐ¼ÐµÐ½Ñ formatarg пÑеобÑазÑеÑÑÑ Ð² ÑекÑÑ Ð¿Ð¾ пÑавилам вÑводам Ñвоего Ñипа даннÑÑ , а заÑем ÑоÑмаÑиÑÑеÑÑÑ Ð¸ вÑÑавлÑеÑÑÑ Ð² ÑезÑлÑÑиÑÑÑÑÑÑ ÑÑÑÐ¾ÐºÑ ÑоглаÑно ÑпеÑиÑикаÑоÑам ÑоÑмаÑа.
СпеÑиÑикаÑоÑÑ ÑоÑмаÑа пÑедваÑÑÑÑÑÑ Ñимволом % и имеÑÑ ÑоÑмÑ
%[позиÑиÑ][Ñлаги][ÑиÑина]Ñип
ÐдеÑÑ:
- позиÑÐ¸Ñ (необÑзаÑелен)
СÑÑока вида n$, где n — Ð¸Ð½Ð´ÐµÐºÑ Ð²Ñводимого аÑгÑменÑа. ÐндекÑ, ÑавнÑй 1, вÑбиÑÐ°ÐµÑ Ð¿ÐµÑвÑй аÑгÑÐ¼ÐµÐ½Ñ Ð¿Ð¾Ñле formatstr. ÐÑли позиÑÐ¸Ñ Ð¾Ð¿ÑÑкаеÑÑÑ, по ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ ÑледÑÑÑий аÑгÑÐ¼ÐµÐ½Ñ Ð¿Ð¾ поÑÑдкÑ.
- Ñлаги (необÑзаÑелен)
ÐополниÑелÑнÑе паÑамеÑÑÑ, ÑпÑавлÑÑÑие ÑоÑмаÑиÑованием данного ÑпеÑиÑикаÑоÑа. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ ÑолÑко знак минÑÑ (-), коÑоÑÑй вÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ ÑезÑлÑÑаÑа ÑпеÑиÑикаÑоÑа по Ð»ÐµÐ²Ð¾Ð¼Ñ ÐºÑаÑ. Ðн ÑабоÑаеÑ, ÑолÑко еÑли Ñакже опÑеделена ÑиÑина.
- ÑиÑина (необÑзаÑелен)
ÐадаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное ÑиÑло Ñимволов, коÑоÑое бÑÐ´ÐµÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ ÑезÑлÑÑÐ°Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑпеÑиÑикаÑоÑа. ÐÑводимое знаÑение вÑÑавниваеÑÑÑ Ð¿Ð¾ пÑавой или левой ÑÑоÑоне (в завиÑимоÑÑи Ð¾Ñ Ñлага -) Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñм ÑиÑлом пÑобелов. ÐÑли ÑиÑина ÑлиÑком мала, она пÑоÑÑо игноÑиÑÑеÑÑÑ, Ñ. е. ÑезÑлÑÑÐ°Ñ Ð½Ðµ ÑÑекаеÑÑÑ. ШиÑÐ¸Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð¾ обознаÑиÑÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑм ÑелÑм, звÑздоÑкой (*), Ñогда ÑиÑина бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑена из ÑледÑÑÑего аÑгÑменÑа ÑÑнкÑии, или ÑÑÑокой вида *n$, Ñогда ÑиÑина бÑÐ´ÐµÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑÑÑ Ð² n-ом аÑгÑменÑе ÑÑнкÑии.
ÐÑли ÑиÑина пеÑедаÑÑÑÑ Ð² аÑгÑменÑе ÑÑнкÑии, ÑÑÐ¾Ñ Ð°ÑгÑÐ¼ÐµÐ½Ñ Ð²ÑбиÑаеÑÑÑ Ð´Ð¾ аÑгÑменÑа, иÑполÑзÑемого Ð´Ð»Ñ ÑпеÑиÑикаÑоÑа. ÐÑли аÑгÑÐ¼ÐµÐ½Ñ ÑиÑÐ¸Ð½Ñ Ð¾ÑÑиÑаÑелÑнÑй, ÑезÑлÑÑÐ°Ñ Ð²ÑÑавниваеÑÑÑ Ð¿Ð¾ левой ÑÑоÑоне (как еÑли Ð±Ñ Ð±Ñл Ñказан Ñлаг -) в ÑÐ°Ð¼ÐºÐ°Ñ Ð¿Ð¾Ð»Ñ Ð´Ð»Ð¸Ð½Ñ
abs(ÑиÑина).- Ñип (обÑзаÑелен)
Тип ÑпеÑиÑикаÑоÑа опÑеделÑÐµÑ Ð¿ÑеобÑазование ÑооÑвеÑÑÑвÑÑÑего вÑводимого знаÑениÑ. ÐоддеÑживаÑÑÑÑ ÑледÑÑÑие ÑипÑ:
s ÑоÑмаÑиÑÑÐµÑ Ð·Ð½Ð°Ñение аÑгÑменÑа как пÑоÑÑÑÑ ÑÑÑокÑ. ÐнаÑение NULL пÑедÑÑавлÑеÑÑÑ Ð¿ÑÑÑой ÑÑÑокой.
I обÑабаÑÑÐ²Ð°ÐµÑ Ð·Ð½Ð°Ñение аÑгÑменÑа как SQL-иденÑиÑикаÑоÑ, пÑи Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи заклÑÑÐ°Ñ ÐµÐ³Ð¾ в кавÑÑки. ÐнаÑение NULL Ð´Ð»Ñ Ñакого пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑиÑаеÑÑÑ Ð¾ÑибоÑнÑм.
L заклÑÑÐ°ÐµÑ Ð·Ð½Ð°Ñение аÑгÑменÑа в апоÑÑÑоÑÑ, как ÑÑÑÐ¾ÐºÑ SQL. ÐнаÑение NULL вÑводиÑÑÑ Ð±ÑквалÑно, как NULL, без кавÑÑек.
Рдополнение к ÑпеÑиÑикаÑоÑам, опиÑаннÑм вÑÑе, можно иÑполÑзоваÑÑ ÑпеÑпоÑледоваÑелÑноÑÑÑ %%, коÑоÑÐ°Ñ Ð¿ÑоÑÑо вÑÐ²ÐµÐ´ÐµÑ Ñимвол %.
ÐеÑколÑко пÑÐ¸Ð¼ÐµÑ Ð¿ÑоÑÑÑÑ Ð¿ÑеобÑазований ÑоÑмаÑа:
SELECT format('Hello %s', 'World');
РезÑлÑÑаÑ: Hello World
SELECT format('Testing %s, %s, %s, %%', 'one', 'two', 'three');
РезÑлÑÑаÑ: Testing 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', E'C:\\Program Files');
РезÑлÑÑаÑ: INSERT INTO locations VALUES(E'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, ÑÑнкÑÐ¸Ñ format в PostgreSQL позволÑÐµÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð¸ÑоваÑÑ Ð² одной ÑÑÑоке ÑпеÑиÑикаÑоÑÑ Ñ Ð¿Ð¾Ð»Ñми позиÑÐ¸Ñ Ð¸ без ниÑ
. СпеÑиÑикаÑÐ¾Ñ ÑоÑмаÑа без Ð¿Ð¾Ð»Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð²Ñегда иÑполÑзÑÐµÑ ÑледÑÑÑий аÑгÑÐ¼ÐµÐ½Ñ Ð¿Ð¾Ñле поÑледнего вÑбÑанного. ÐÑоме Ñого, ÑÑнкÑÐ¸Ñ format не ÑÑебÑеÑ, ÑÑÐ¾Ð±Ñ Ð² ÑÑÑоке ÑоÑмаÑа иÑполÑзовалиÑÑ Ð²Ñе аÑгÑменÑÑ ÑÑнкÑии. ÐÑÐ¸Ð¼ÐµÑ ÑÑого поведениÑ:
SELECT format('Testing %3$s, %2$s, %s', 'one', 'two', 'three');
РезÑлÑÑаÑ: Testing three, two, threeСпеÑиÑикаÑоÑÑ ÑоÑмаÑа %I и %L оÑобенно Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð´Ð»Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñного ÑоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑÐºÐ¸Ñ Ð¾Ð¿ÐµÑаÑоÑов SQL. См. ÐÑÐ¸Ð¼ÐµÑ 40-1.
| ÐÑед. | ÐаÑало | След. |
| ÐаÑемаÑиÑеÑкие ÑÑнкÑии и опеÑаÑоÑÑ | УÑÐ¾Ð²ÐµÐ½Ñ Ð²ÑÑе | ФÑнкÑии и опеÑаÑоÑÑ Ð´Ð²Ð¾Ð¸ÑнÑÑ ÑÑÑок |