PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL:Има ли функция, която ще преобразува base-10 int в base-36 низ?

Има функции base-64 (като encode ), но нищо за база-36. Но можете да напишете свой собствен или използвайте този :

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;

Мисля, че трябва да се запитате дали базата данни е правилното място за справяне с този вид форматиране на данни, все пак проблеми с представянето като този може да се решат по-добре по-близо до крайното ниво на гледане на вашия стек.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свързване на Django и Postgresql с Docker

  2. AFTER LOGON(Oracle) тригер в PostgreSQL с разширение – login_hook

  3. Елиминирайте двойните кавички от json поле по селективен начин в PostgreSQL

  4. Зареждане на компресиран CSV(filename.csv.gz) файл в таблицата на PostgreSQL

  5. как да проверите вида на стойността в postgres