Najczęściej używane operacje to:
length(nap) podaje długość napisu nap w znakach;
trim(nap) zwraca napis nap z usuniętymi początkowymi i końcowymi spacjami. Warianty: trim(BOTH, nap), trim(LEADING, nap), trim(TRAILING, nap).
substr(str,m,n) zwraca fragment napisu str, rozpoczynający się od znaku o numerze m o długości n znaków. Parametr n można pomijać, otrzymamy wtedy całą resztę napisu. Oczywiście wynki jest napisem.
substring(kol FROM m FOR n) -- to samo.
rpad(kol,n[,znak]) zwraca napis w kolumnie kol
uzupełniony
na końcu spacjami do szerokości n
. Opcjonalny trzeci argument podaje
inny znak do wypełniania.
lpad(kol,n[,znak]) jak poprzednia, ale uzupełnia na początku.
lower(kol) zamienia dużę litery w napisie na małe.
upper(kol) zamienia małe litery w napisie na dużę.
initcap(kol) ustawia pierwszą literę na dużą.
position(str1 IN kol) szuka napisu str1 w napisie str2 i zwraca numer pierwszego znaku znalezionego wystąpienia napisu str1.
strpos(kol,pos) -- to samo.
str1 || str2 zwraca konkatenację napisów str1 i str2.
Przypuśćmy, że w kolumnie student mamy zapisaną informację w postaci 'nazwisko imię', a chcemy odwrócić tę kolejność na postać 'imię nazwisko':
substr(student, position(' ' IN student) + 1) || ' ' || substr(student, 1, position(' ' IN student))
W Postgresie daty i czas są obsługiwane zgodnie ze standardem SQL2. Cztery podstawowe wbudowane typy to DATE, TIME, TIMESTAMP i INTERVAL. Typ TIMESTAMP obejmuje zarówno datę jak i czas.
Typów takich jak DATE używa się tak samo jak innych, na przykład do tworzenia kolumn tabeli
CREATE TABLE x(a int, b date);
Przed wyświetleniem daty zamieniane są automatycznie na napis.
Do konwersji używa się funkcji to_char
, według ustalonego
formatu domyślnego. U nas domyślnym formatem jest ISO, tzn.
'YYYY-MM-DD', na przykład
SELECT b FROM x; B ---------- 2004-04-01
Sposób wyświetlania daty można zmienić wywołując samemu to_char
z własnym formatem
SELECT to_char(b, 'YYYY/MM/DD') AS b FROM x; B ---------- 2004/04/01
Funkcja to_char
ma składnię:
to_char(data, 'format') |
|
Przy wczytywaniu dat używa się funkcji date, zamieniającej napis na datę zgodnie z domyślnym formatem. Zwykle nie wywołuje się jej jawnie, ponieważ Postgres tam, gdzie jest wymagany argument typu data, automatycznie zamienia napis na datę wołając date, na przykład
insert into x values(99, '2004-05-31');
W innych sytuacjach trzeba jawnie wywoływać funkcję date.
Chcąc użyć innego formatu należy wywołać funkcje to_date
:
INSERT INTO x VALUES(99, to_date('2004/05/31', 'yyyy/mm/dd'));
Funkcja to_date
ma składnię:
to_date(napis, 'format') |
to_char
.Domyślny format daty zmienia się instrukcją SET DATESTYLE, na przykład:
SET DATESTYLE TO SQL, DMY;
Dozwolone wartości pierwszego parametru to: ISO, SQL, POSTGRES, a drugiego: EUROPEAN, US, NONEUROPEAN.
Standardowe zmienne current_date
i current_time
zwracają
bieżącą datę i czas.
SELECT current_date AS "Bieżąca data", current_time AS "Teraz"; Bieżąca data Teraz ---------------------------- 2004-01-01 21:18:27
Zmienna current_timestamp
podaje zarówno datę jak i czas.
Daty można porównywać standardowymi operatorami porównania =, !=, >, itp.
Daty można odejmować od siebie, Otrzymując wynik typu TIMESPAN.
Do dat można dodawać liczby lub odejmować je od nich, na przykład current_date + 1 to dzień jutrzejszy.
Po przekształceniu na napis funkcją to_char
, można na datach
wykonywać wszelkie operacje dla napisów, na przykład
to_char(date, 'DD-MON-YY') LIKE '%JUN% '
|
Dla liczbe określone są funkcje abs, round i trunc.