एक पुरानी तरकीब इस उद्देश्य के लिए पार्सर का उपयोग कर रही है:
postgres=# select e'Telefon\u00ED kontakty';
?column?
-------------------
Telefoní kontakty
(1 row)
CREATE OR REPLACE FUNCTION public.unescape(text)
RETURNS text
LANGUAGE plpgsql
AS $function$
DECLARE result text;
BEGIN
EXECUTE format('SELECT e''%s''', $1) INTO result;
RETURN result;
END;
$function$
यह काम करता है, लेकिन यह एसक्यूएल इंजेक्शन असुरक्षित है - इसलिए आपको पहले इनपुट टेक्स्ट को साफ करना चाहिए!
यहां कम पठनीय, लेकिन सुरक्षित संस्करण है - लेकिन आपको मैन्युअल रूप से एक चार को एस्केप सिंबल के रूप में निर्दिष्ट करना होगा:
CREATE OR REPLACE FUNCTION public.unescape(text, text)
RETURNS text
LANGUAGE plpgsql
AS $function$
DECLARE result text;
BEGIN
EXECUTE format('SELECT U&%s UESCAPE %s',
quote_literal(replace($1, '\u','^')),
quote_literal($2)) INTO result;
RETURN result;
END;
$function$
परिणाम
postgres=# select unescape('Odpov\u011Bdn\u00E1 osoba','^');
unescape
-----------------
Odpovědná osoba
(1 row)