PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PostgreSQL:Apakah ada fungsi yang akan mengubah int base-10 menjadi string base-36?

Ada fungsi base-64 (seperti encode ) tapi tidak untuk base-36. Tapi Anda bisa menulis salah satu dari Anda sendiri atau gunakan yang ini :

CREATE OR REPLACE FUNCTION base36_encode(IN digits bigint, IN min_width int = 0) RETURNS varchar AS $$
DECLARE
    chars char[]; 
    ret varchar; 
    val bigint; 
BEGIN
    chars := ARRAY['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
    val := digits; 
    ret := ''; 
    IF val < 0 THEN 
        val := val * -1; 
    END IF; 
    WHILE val != 0 LOOP 
        ret := chars[(val % 36)+1] || ret; 
        val := val / 36; 
    END LOOP;

    IF min_width > 0 AND char_length(ret) < min_width THEN 
        ret := lpad(ret, min_width, '0'); 
    END IF;

    RETURN ret;
END;
$$ LANGUAGE plpgsql IMMUTABLE;

Saya pikir Anda harus bertanya pada diri sendiri apakah database adalah tempat yang tepat untuk menangani pemformatan data semacam ini, masalah presentasi seperti ini mungkin lebih baik ditangani lebih dekat ke tingkat tampilan akhir tumpukan Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Membuat API GraphQL Tanpa Server untuk MySQL, Postgres, dan Aurora

  2. psql setel statement_timeout default sebagai pengguna di postgres

  3. Bagaimana saya bisa menulis kueri SQL untuk menghitung jumlah komponen yang dijual dengan rakitan induknya? (Postgres 11/CTE rekursif?)

  4. Hitung jumlah maksimum sesi pengguna bersamaan

  5. Bagaimana cara memetakan jenis kolom Interval PostgreSQL di Hibernate?