Vastus: Järgneva koodi võite käivitada oma andmebaasis ja see loob operaatori & mis käitub nii:
NULL & tekstiline väärus = tekstiline väärtus
NULL & NULL = tühi string
CREATE FUNCTION textcat_coalesce(text, text) RETURNS text AS $$
SELECT coalesce($1,'') || coalesce($2,'');
$$ LANGUAGE sql IMMUTABLE LEAKPROOF;
COMMENT ON FUNCTION textcat_coalesce(text, text) IS
'Stringide konkatenatsiooni operaatorit & realiseeriv funktsioon. Tagab, et operatsiooni tulemus pole NULL.';
CREATE OPERATOR & (
LEFTARG = text,
RIGHTARG = text,
PROCEDURE = textcat_coalesce
);
SELECT NULL || 'katsetus' AS tulemus;
Tulemus:NULL
SELECT NULL & 'katsetus' AS tulemus;
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)