PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL:Czy istnieje funkcja, która konwertuje int o podstawie 10 na ciąg o podstawie 36?

Istnieją funkcje base-64 (takie jak encode ), ale nic dla podstawy 36. Ale możesz napisać własny lub użyć tego :

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;

Myślę, że powinieneś zadać sobie pytanie, czy baza danych jest właściwym miejscem do radzenia sobie z tego rodzaju formatowaniem danych, takie problemy z prezentacją mogą być lepiej rozwiązywane bliżej końcowego poziomu wyświetlania stosu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Właściwy generator identyfikatorów Hibernate dla kolumny postgres serial/bigserial?

  2. Narzędzie do tłumaczenia Oracle PL/SQL na Postgresql PL/pgSQL

  3. INSERT INTO ... RETURNING - niejednoznaczne odniesienie do kolumny

  4. Postgresql wymusza unikalną dwukierunkową kombinację kolumn

  5. Wartość null Spring Data JPA w kolumnie xxx narusza ograniczenie braku wartości null w kolumnie szeregowej z postgresql