PostgreSQL toetas juba varasemalt mitmeid standardi uude versiooni tehtud täiendusi ning ka PostgreSQL 16 (tuli välja 2023. aasta septembris) lisandus mõningaid standardi uude versiooni lisandunud võimalusi.
PostgreSQL 16 lisandus võimalus kasutada loetavuse parandamiseks täisarve ja püsikomaarve esitavates literaalides alakriipse.
SELECT *FROM EmpWHERE sal>1_000_000;Samuti lisandus PostgreSQL 16 võimalus esitada täisarvu tüüpi väärtuse literaali muus formaadis kui kümnendformaat (nt kuueteistkümnend formaadis).
SELECT *FROM EmpWHERE sal>0xF4240;Eelnevad kaks on samaväärsed kui päring:
SELECT *FROM EmpWHERE sal>1000000;Veenduge:
SELECT cast(0xF4240 AS INTEGER);Samuti lisandus PostgreSQL 16 kokkuvõttefunktsioon ANY_VALUE. Leia sellised ametikohad, millel töötab vähemalt kaks töötajat. Väljasta ametikoha nimetus ja ühe sellisel ametikohal töötava töötaja kood.
SELECT job, any_value(empno) AS üks_töötaja_sellise_ametigaFROM EmpGROUP BY jobHAVING Count(*)>1;
Samuti saab nüüd kontrollida, kas tekstiline väärtus esitab JSON väärtust.
WITH vaartused AS (VALUES ('{"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] }}}'), ('<menu id="file" value="File"> <popup> <menuitem value="New" onclick="CreateNewDoc()" /> <menuitem value="Open" onclick="OpenDoc()" /> <menuitem value="Close" onclick="CloseDoc()" /> </popup></menu>'))SELECT column1 AS vaartus, column1 IS JSON AS is_jsonFROM vaartused;PostgreSQL toetas juba varasemast selliseid SQL:2023 lisandunud võimalusi:
- võimalust deklareerida, et UNIQUE kitsenduse kontekstis käsitletakse NULLi väärtusena ja seega NULL=NULL e mittekohustuslik UNIQUE veerus võib olla maksimaalselt üks NULL,
CREATE TABLE unik (vaartus INTEGER,CONSTRAINT uq_unik UNIQUE NULLS NOT DISTINCT (vaartus));INSERT INTO unik(vaartus) VALUES (NULL);INSERT INTO unik(vaartus) VALUES (NULL); --ebaõnnestub- grupeerimise tulemuse sorteerimist veeru järgi, mida pole SELECT klauslis,
SELECT deptno, Count(*) AS cntFROM Dept INNER JOIN Emp USING (deptno)GROUP BY deptnoORDER BY dname; - funktsioone greatest ja least,
SELECT greatest(1,2,3) AS suurim, least(1,2,3) AS vähim;- funktsioone lpad ja rpad,
SELECT lpad(cast(123 as varchar), 12, '*') ;- funktsioone, mis kärbivad stringi algusest rohkem kui ühe märgi,
SELECT ltrim('****123', '*');- väljapikkuse mittemääramist tekstilise veeru defineerimisel,
CREATE TABLE T(a CHAR, b VARCHAR);- lihtsustatud tsükli kontrollimise süntaksi rekursiivsete päringute puhul,
- JSON andmetüüpi (PostgreSQLis on tüübid JSON ja JSONB) (samas ei ole PostgreSQL 16-s SQL:2023-s ette nähtud võimalust deklareerida, et JSON väärtuses peavad olema unikaalsed võtmed),
- JSONB tüüpi väärtuste korral nende võrdlemist ning nende alusel sorteerimist ja grupeerimist.
PostgreSQL tugi SQL standardile on dokumentatsioonis kirjeldatud lisas, kus eraldi tuuakse välja, millised standardis ettenähtud keele võimalused on andmebaasisüsteemi poolt toetatud ja millised on mittetoetatud .
Kahjuks ei ole PostgreSQL 16 veel omaduste graafi tuge.