PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Chuyển đổi ký tự Unicode thoát trở lại ký tự thực trong PostgreSQL

Một thủ thuật cũ đang sử dụng trình phân tích cú pháp cho mục đích này:

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$

Nó hoạt động, nhưng nó dễ bị chèn SQL - vì vậy bạn nên làm sạch văn bản đầu vào trước!

Đây là phiên bản ít đọc hơn, nhưng an toàn - nhưng bạn phải chỉ định thủ công một ký tự làm biểu tượng thoát:

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$

Kết quả

postgres=# select unescape('Odpov\u011Bdn\u00E1 osoba','^');
    unescape     
-----------------
 Odpovědná osoba
(1 row)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tải PostgreSQL trên VPS / Máy chủ chuyên dụng

  2. Tìm các hàng có nhiều trường trùng lặp với Active Record, Rails &Postgres

  3. Làm cách nào để cài đặt gem hoạt động trên OS X Lion với Ruby 1.8.7 mà không bị lỗi seg?

  4. Postgres không thể kết nối với máy chủ

  5. Đếm tổng tích lũy trong Postgresql