Küsimus
Vastus:
Järgneva koodi võite käivitada oma andmebaasis ja see loob operaatori & mis käitub nii:
CREATE FUNCTION textcat_coalesce(text, text) RETURNS text AS $$
COMMENT ON FUNCTION textcat_coalesce(text, text) IS CREATE OPERATOR & (
SELECT NULL || 'katsetus' AS tulemus; SELECT NULL & 'katsetus' AS tulemus;
NULL & tekstiline väärus = tekstiline väärtus
NULL & NULL = tühi string
SELECT coalesce($1,'') || coalesce($2,'');
$$ LANGUAGE sql IMMUTABLE LEAKPROOF;
'Stringide konkatenatsiooni operaatorit & realiseeriv funktsioon. Tagab, et operatsiooni tulemus pole NULL.';
LEFTARG = text,
RIGHTARG = text,
PROCEDURE = textcat_coalesce
);
Tulemus:NULL
Tulemus: katsetus
NB! Alternatiiv sellise operaatori kasutamisele oleks tarvitada koos PostgreSQLi konkateneerimise operaatoriga (||) coalesce funktsiooni. coalesce funktsiooni pool pöördumisel võib ette anda mitu samatüübilist argumenti. Funktsioon tagastab vasakult lugedes esimese argumendi, mis ei ole NULL (või kui kõik argumendid on NULLid, siis tagastab NULLi). Seda funktsiooni saab kasutada NULLi asendamiseks konkreetse väärtusega.
SELECT coalesce(NULL,'') || 'katsetus' AS tulemus;
Tulemus: katsetus (sest kokku ühendatakse kaks väärtust - 'katsetus' ja '')
Samuti võib kasutada concat_ws funktsiooni.
SELECT concat_ws(' ', 'katsetus', NULL) AS tulemus;
Tulemus: katsetus (sest funktsioon ignoreerib NULL argumente)