SQLсервер в Linux -самостоятельное освоение пакета

         

Функция initcapO получает один аргумент


booktowrHf SELECT chr(65), ascii('A');
chr ! ascii
A | 65
(1 row)
initcap()
Синтаксис: initcap(s)
Функция initcapO получает один аргумент s типа text, преобразует первые буквы всех слов к верхнему регистру и возвращает полученную строку. В данном контексте «словом» считается любая последовательность символов, отделенная от других слов пробелами.


booktown=# SELECT * FROM books
booktown-# WHERE title LIKE ('XRabbit1):
id i title | authorjd subjectjd
1234 | The Velveteen Rabbit | 25041 | 3
(1 row)
booktown=# SELECT * FROM books
booktown-# WHERE title LIKE
id | title | authorjd | subjectjd
4513 | Dune | 1866 | 15


25908 | Franklin in the Dark | 15990 | 2 (2 rows)
booktown=# SELECT * FROM books
booktown-# WHERE title ILIKE '«python*':
id | title | authorjd | subjectjd
41473 | Programming Python | 7805 | 4 41477
Learning Python | 7805 4
(2 rows)
lower()
Синтаксис: lower(s)
Функция SQL92 1 ower () получает один аргумент типа text, преобразует все символы строки к нижнему регистру и возвращает полученную строку в виде значения типа text.


booktown=# SELECT ItrimC whitespace example'):
Itrim
whitespace example (1 row)
booktown=# SELECT title. ItrimCtitle, 'TD2he ')
booktown-# FROM books booktown-# LIMIT 4:
title | Itritn
The Shining | Shining
Dune I une
2001: A Space Odyssey | 001: A Space Odyssey
The Cat in the Hat j Cat In the Hat
(4 rows)
octet_length()
Синтаксис: octetjength(s)
Функция SQL92 octetj ength() получает один аргумент s типа text, varchar или character и возвращает длину полученной строки в байтах. Возвращаемое значение относится к типу integer.
В большинстве случаев длина строки в байтах совпадает с количеством символов, хотя в расширенных кодировках не всегда, поскольку в них символ по определению может состоять из нескольких байтов.
Пример
booktown=# SELECT title, octetjength(title)
booktown-# FROM books
booktown-# ORDER BY title ASC
booktown-# LIMIT 3:
title octet Jength
2001: A Space Odyssey | 21
Bartholomew and the Oobleck | 27
Dune | 4
(3 rows)
position()
Синтаксис: position(b IN s)
Функция SQL92 position^) получает два аргумента, относящихся к типу text, и возвращает начальную позицию подстроки b в строке s (отсчет начинается с 1). Возвращаемое значение относится к типу i nteger. Если подстрока не найдена, функция возвращает 0.


booktown=# SELECT rtrimC'whitespace example ');
rtrim
whitespace example
(1 row)
booktown=# SELECT title, rtrinKtitle, 'yes')
booktown-# FROM books
booktown-# LIMIT 4;
title rtrim
The Shining | The Shining
Dune Dun 2001: A Space Odyssey 2001: A Space Od
The Cat in the Hat j The Cat in the Hat
(4 rows)
strpos()
Синтаксис: strpos(s. b)
Функция strposO эквивалентна функции SQL92 positionO, но аргументы передаются ей в стиле С. Функция получает два аргумента, относящихся к типу text, и возвращает начальную позицию подстроки b в строке s (отсчет начинается с 1). Возвращаемое значение относится к типу 1 nteger. Если подстрока не найдена, функция возвращает 0.


booktown=# SELECT title, substring(title FROM 15)
booktown-# FROM books
booktown-* ORDER BY title DESC
booktown-# LIMIT 3;
title | substring
The Velveteen Rabbit | Rabbit
The Tell- Tale Heart Heart The Shining
(3 rows)
booktown=# SELECT title, substring(title FROM 5 FOR 9)
booktown-# FROM books
booktown-# ORDER BY title DESC booktown-# LIMIT 3;
title | substring
The Velveteen Rabbit Velveteen
The Tell-Tale Heart Tell-Tale
The Shining | Shining
(3 rows)
to_ascii()
Синтаксис:
to_ascii(s, f)
Функция to_asci i () получает строковый аргумент s, относящийся к типу text, и обозначение расширенной кодировки f, а возвращает обычный ASCII-текст в виде значения типа text.
Допустимы следующие обозначения расширенных кодировок: LATIN1 (ISO 8859-1), LATIN2 (ISO 8859-2) и WIN1250 (Windows CP1250 или WinLatin2). Для работы функции необходима поддержка расширенных кодировок (устанавливается при помощи ключа командной строки компилятора при установке PostgreSQL).


booktowrH1 SELECT isbn, trim(LEADING '0' FROM isbn)
booktown-# FROM editions booktown-# LIMIT 2; isbn | Itrim
039480001X 39480001X 0451160916 451160916
(2 rows)
booktown=# SELECT isbn, trimCTRAILING 'X' FROM isbn)
booktown-# FROM editions booktown-# LIMIT 2;
1Sbn rtrim
039480001X j 039480001 0451160916 j 0451160916
(2 rows)
booktowrHf SELECT isbn, trimCBOTH 'OX' FROM isbn)
booktown-# FROM editions booktown-# LIMIT 2; isbn I btrim
039480001X | 39480001 0451160916 | 451160916
(2 rows)
upper()
Синтаксис:
upper(s)
Функция SQL92 upper() получает один аргумент типа text, преобразует все символы строки к верхнему регистру и возвращает полученную строку в виде значения типа text.


booktown=# SELECT date_part('minute'.
booktown(# intervalC3 days 4 hours 12 minutes')):
date_part
12
(1 row)
booktown=# SELECT isbn,
booktown-l date_part('year', publication)
booktown-# FROM editions
booktown-# ORDER BY date_part ASC
booktown-# LIMIT 3;
isbn | date_part
0760720002 | 1868
0679803335 | 1922
0694003611 | 1947
(3 rows)
Примечание 1
Примечание 1

Аналогом функции date_part() в SQL является функция extract().
date_trunc()
Синтаксис: date_trunc(s. t)
Функция date_trunc () получает два аргумента s и t, относящихся к типам text и timestamp соответственно. Строка s определяет компонент, до которого усекается аргумент t. В данном контексте под усечением понимается удаление всех компонентов, детализация которых превышает заданную.
Допустимые значения аргумента s перечислены в табл. 5.12.


booktown=# SELECT extract(MINUTE FROM
interval('3 days 12 minutes1)): datejpart
12
(1 row)
booktown=# SELECT extractCMONTH FROM now()):
date_part
8
(1 row)
isfinite()
Синтаксис:
isfinite(t) isfinite(i)
Функция 1 sf 1 ni te() получает один аргумент типа timestamp или 1 interval. Она возвращает true, если переданное значение не является бесконечным, созданным при помощи специальной константы Infinity или invalid (используется только для timestamp).


booktown=# SELECT to_char(123456789. '999G999G999D99') AS formatted,
booktown-# to_char(123456789. '999999999') AS justjrigits,
booktown-f to_char(123456789, '00999999999') AS with_zeroes;
formatted | justjrigits | with_zeroes
123.456.789.00 | 123456789 | 00123456789
(1 row)
booktown=# SELECT cost * 100 AS cost_to_order.
booktown-# to_char(cost * 100, '$99.999.99') AS monetary,
booktown-# translate(to_char(cost * 100. '$9,999.99'),' ',").
booktown-# AS translated
booktown-# FROM stock
booktown-* LIMIT 3;
cost_to_order monetary translated
2900.00 | $ 2.900.00 $2.900.00
3000.00 $ 3.000.00 $3.000.00
1600.00 $ 1,600.00 i $1.600.00
(3 rows)
booktown=# SELECT tojrhard.O. '9th "Place"') AS first.
booktown-# to_char(2.2, '9th "Place"') AS second,
booktown-# to_char(pi( ), '9th "Place"') AS third,
booktown-# to_char(10, '99V99th "\\"Place\\.....) AS shifted jjp;
first | second | third | shifted_up
1st Place | 2nd Place | 3rd Place | 1000th "Place"
(1 row)
Примечание 2
Примечание 2

В PostgreSQL версии 7.1.x ошибка в реализации метасимволов RN (римская запись) приводит к тому, что функция to_char() возвращает неправильный результат, если в форматной строке отсутствует последовательность FM. Ошибка должна быть исправлена в версии 7.2, а в качестве временной меры можно использовать полную последовательность FMRN.
to_char() для типа timestamp
Синтаксис:
to_char(t. f)
При вызове с аргументом t типа timestamp и аргументом f типа text функция to_char() форматирует дату и время в строку, возвращаемую в виде значения типа text.
Как и в случае с предыдущей версией to_char(), строка f содержит метасимволы, вместо которых PostgreSQL подставляет литералы. Метасимволы, используемые в форматных строках даты и времени, перечислены в табл. 5.15.


booktown=# SELECT to_char(now(). 'HH:MI PM1) AS the_time;
the_time
05:04 PM
(1 row)
booktown=# SELECT to_char(now(), 'Dy (Day), Mon (Month)')
booktown-# AS abbreviations,
booktown-# to_char('yesterday'::timestamp, 'FMMonth FMDDth')
booktown-# AS yesterday.
booktown-# to_char('yesterday':itimestamp, 'FMDDth FMMonth')
booktown-# AS "yesterday UK";
abbreviations | yesterday j yesterday UK
Sat (Saturday ). Sep (September) | August 31st | 31st August
(1 row)
booktown=# SELECT isbn,
booktown-# to_char(publication, 'FMMonth FMDDth, YYYY')
booktown-# AS informal,
booktown-# to_char(publication, 'YYYY-MM-DD') AS formal,
booktown-# to_char(publication. 'Y.YYY "years" A.D.')
booktown-# AS firstj)ublished
booktown-# FROM editions LIMIT 3;
isbn | informal | formal first_pub1ished
039480001X | March 1st. 1957 1957-03-01 1.957 years A.O.
0451160916 | August 1st. 1981 | 1981-08-01 | 1.981 years A.D.
0394800753 | March 1st. 1949 | 1949-03-01 | 1.949 years A.D.
(3 rows)
to date()
Синтаксис:
to_date(s. f)
Функция to_date() получает два аргумента типа text. Аргумент f описывает формат даты, представленной строкой s, и содержит метасимволы из табл. 5.15. Результат возвращается в виде значения типа date.
В PostgreSQL поддерживается много распространенных форматов данных, однако предусмотреть все форматы невозможно. Функция to_date() гарантирует, что практически любой формат даты, описываемый метасимволами из табл. 5.14, может быть преобразован в значение типа date.
Пример
booktown=# SELECT date('198025thJune')
booktown-f AS non_standard_date_format,
booktown -# toJate (' 198025thJune', ' YYYYDDthMonth')
booktown-# AS correct_interpretation;
non_standard_date_format correct_interpretation
2025-08-27 | 1980-06-25
(1 row)
to_number()
Синтаксис:
to_number(s. f)
Функция to_number() получает два аргумента типа text. Аргумент f описывает формат числа, представленного строкой s, и содержит метасимволы из табл. 5.14. Результат возвращается в виде значения типа numeric.


booktown=# SELECT to_number('$2,900.00', 'L9G999D99')
booktown-# AS monetary: monetary
2900.00 (1 row)
booktown=# SELECT tojiumber('123.456.789.00' . '999G999G999D99')
booktown-# AS formatted,
booktown-# to_numberС123456789'. '999999999')
booktown-# AS just_digits,
booktown-# to_number('00123456789'. '00999999999')
booktown-# AS leading_zeroes;
formatted | just_d1gits | leading_zeroes
123456789.00 123456789 | 123456789
(1 row)
to_timestamp()
Синтаксис:
to_timestamp(s. f)
Функция to_timestamp() получает два аргумента типа text. Аргумент f описывает формат даты/времени, представленного строкой s, и содержит метасимволы из табл. 5.15. Результат возвращается в виде значения типа date.
Эта функция, как и to_date(), прежде всего обеспечивает возможность правильной интерпретации нестандартных строк, содержащих дату и время.


booktown=# SELECT avg(cost) AS average_cost,
booktown-# avg(retail) AS average_price,
booktown-# avg(retail - cost) AS average_profit
booktown-# FROM stock:
average_cost | average_price | average_prof1t
24.8235294118 | 30.0088235294 5.1852941176
(1 row)
x>oktown=# SELECT avg(cost)
AS average_cost, p.name AS publisher
booktown-# FROM stock JOIN editions USING (isbn))
booktown-l JOIN publishers AS p (publisheMd)
booktown-# USING (publisheMd)
booktown-# GROUP BY p.name;
average_cost | publisher
26.5000000000 | Ace Books
19.0000000000 | Books of Wonder
26.5000000000 I Doubleday
25.0000000000 | HarperCollins
18.0000000000 | Henry Holt & Company. Inc.
23.0000000000 I Kids Can Press
23.0000000000 | Mojo Press
20.0000000000 I Penguin
23.0000000000 Random House
26.5000000000 | Roc
26.0000000000 | Watson-Guptill Publications
(11 rows)
count()
Синтаксис:
count(выражение)
Функция countO возвращает количество значений, для которых выражение отлично от NULL. Тип выражения не ограничивается. Следует помнить, что функция count () подсчитывает только значения, отличные от NULL, поэтому для получения осмысленных результатов используемое выражение не должно возвращать NULL для подсчитываемых записей.
Если при вызове count() передается символ *, функция просто подсчитывает все записи, в том числе и содержащие NULL.


booktown=# SELECT countC*) FROM editions;
count
17
(1 row)
booktown=# SELECT count(isbn). p.name
booktown-# FROM editions JOIN publishers AS p (publisheMd)
booktown-# USING (publisheMd)
booktown-# GROUP BY p.name
booktown-# ORDER BY count DESC;
count | name
3 | Random House
2 | Ace Books
2 | Doubleday
2 Roc
1 | Books of Wonder
1 | HarperCollins
1 | Henry Holt & Company. Inc.
1 | Kids Can Press
1 | Mojo Press
1 | O'Reilly & Associates
1 | Penguin
1 | Watson-Gupti11 Publications
(12 rows)
max()
Синтаксис:
max(выражение)
Функция max() возвращает максимальное значение заданного выражения в группе. Результатом выражения может быть значение любого числового или строкового типа, а также типа даты или времени. Тип возвращаемого значения совпадает с типом выражения.


booktown=# SELECT max(cost), max(retail) FROM stock;
max max
36.00 I 46.95
(1 row)
booktown=# SELECT max(retail), p.name
booktown-# FROM (stock NATURAL JOIN editions)
booktown-# JOIN publishers AS p (publisher_id)
booktown-# USING (publisherjd)
booktown-# GROUP BY p.name
booktown-# ORDER BY max DESC;
max | name
46.95 | Roc
45.95 i Ace Books 36.95 Doubleday 32.95
Random House 28.95 HarperCollins
28.95 I Watson-Guptill Publications
24.95 | Mojo Press
24.95 | Penguin
23.95 1 Henry Holt & Company. Inc. 23.95
Kids Can Press 21.95 Books of Wonder
(11 rows)
min()
Синтаксис:
min (выражение)
Функция min() возвращает минимальное значение заданного выражения в группе. Результатом выражения может быть значение любого числового или строкового типа, а также типа даты или времени. Тип возвращаемого значения совпадает с типом выражения.


booktown=# SELECT min(cost). min(retail) FROM stock;
min | min
16.00 16.95
(1 row)
booktown=# SELECT min(retail), p.name
booktown-# FROM (stock NATURAL JOIN editions)
booktown-# JOIN publishers AS p (publisheMd)
booktown-# USING (publisheMd)
booktown-l GROUP BY p.name
booktown-# ORDER BY min ASC;
miP 1 ..mme._
16.95 | Random House
21.95 Ace Books
21.95 I Books of Wonder
22.95 | Roc
23.95 | Henry Holt & Company. Inc.
23.95 | Kids Can Press
24.95 | Mojo Press
24.95 I Penguin
28.95 | Doubleday
28.95 I HarperCollins
28.95 | Watson-Guptill Publications
(11 rows)
stddev()
Синтаксис:
stddev(выражение)
Функция stddev О получает выражение, описывающее значения любого числового типа (numeri с, bigi nt, smal 1 i nt, real или doubl e preci si on), и возвращает среднеквадратичное отклонение для группы. Для вещественных выражений результат возвращается в виде значения типа double precision, а для остальных типов —в виде значения типа numeric.


booktown=# SELECT stddev(retail) FROM stock;
stddev
8.46
(1 row)
booktown=# SELECT stddev(retail), p.name
booktown-# FROM (stock NATURAL JOIN editions)
booktown-# JOIN publishers AS p ON (publisheMd = p.id)
booktown-# GROUP BY p.name
booktown-# ORDER BY stddev DESC
booktown-# LIMIT 4:
stddev | name
16.97 | Ace Books
16.97 | Roc 8.02 Random House
5.66 | Doubleday
(4 rows)
sum()
Синтаксис:
sum (выражение)
Функция sum() получает выражение, описывающее значения любого числового типа (numeric, bigint, smallint, real или double precision), и возвращает сумму значений в группе. Для выражений типа integer результат возвращается в виде значения типа numeric, а для выражений типа real — в виде значения типа double precision. В остальных случаях тип возвращаемого значения совпадает с типом выражения.


booktown=# SELECT sum(stock) FROM stock;
sum
"BOB"
(1 row)
booktown=# SELECT sum(stock). s.subject
booktown-# FROM ((stock NATURAL JOIN editions)
booktown(# JOIN books ON (books.id = bookjd))
booktown-f JOIN subjects AS s
booktown-# ON (books.subject_id = s.id)
booktown-# GROUP BY s.subject
booktown-# ORDER BY sum DESC;
189 | Horror
166 I Science Fiction
91 | Children's Books
28 | Drama
18 | Classics
16 | Arts
(6 rows)
variance()
Синтаксис: variance(выражение)
Функция variance() получает выражение, описывающее значения любого числового типа (numeric, bigint, small int, real или double precision), и возвращает дисперсию для группы (stddevO в квадрате). Для вещественных выражений результат возвращается в виде значения типа double precision, а для остальных типов — в виде значения типа numeric.
Примеры
booktown=# SELECT variance(retaiT) FROM stock;
variance
71.60
(1 row)
booktown=# SELECT varianceCretail), p.name
booktown-# FROM (stock NATURAL JOIN editions)
booktown-# JOIN publishers AS p
booktown-# ON (editions.pub!isher_id = p.id)
booktown-# GROUP BY p.name
booktown-# ORDER BY variance DESC
booktown-# LIMIT 4: variance name
288.00 | Ace Books 288.00 I Roc 64.33 !
Random House 32.00 | Doubleday
(4 rows)

Содержание раздела