Wpis z mikrobloga

Mam bazę danych na której oparta jest aplikacja webowa napisana w php. Przez kolumnę identyfikator przechodzi sekwencja, która numeruje kolejne wiersze. Potrzebuję zmienić numerowanie w ten sposób aby każdy kolejny wiersz był numerowany w ten sposób aby uzupełnić ciąg znaków do 10 uzupełniając pozostałe miejsca zerami. W jaki sposób to wykonać z poziomu bazy danych czy php ?

Identyfikator
1 0000000001
2 0000000002
3 0000000003
4 0000000004

#programowanie #postgresql #bazydanych #php
  • 8
@energetyk: Pytanie czy chcesz to zrobić na poziomie bazy tj zmienić typ identyfikatora bo to już nie będzie number/numeric tylko string(character(10)) - tego nie polecam
czy zostawić id tak jak jest z sekwencją i tylko wyciągać jej wartość i przekazywać dalej formatując odpowiednio:

to_char(1234,'0000000000');
czyli select to_char(identyfikator,'0000000000') from tabela;
@energetyk: to trochę nie rozumiem, chcesz z 0000000001 zrobić 1 czy z 1 zrobić 0000000001?
Jakby nie było coś z tego chyba ci pomoże:

select to_number('0000000001','9999999999');--zwróci 1
select to_char(1::numeric,'0000000000');--zwróci 0000000001
select to_char(to_number('1','9999999999'),'0000000000');--zwróci 0000000001
@oko_strusia: szukam najlepszego rozwiązania w jedną lub drugą stronę. Baza istnieje z polem char(10) i zastanawiam się jakie rozwiązanie wybrać aby dostosować do nowej aplikacji aby zachować relację między rekordami i w jaki sposób dodawać już nowe rekordy aby zachować jednolitość bazy dla starych i nowych wpisów