![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 1 Dołączył: 4.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
witam,
mam w mojej bazie w jednej z kolumn ponad tysiąc rekordów, id rośnie automatycznie co 1 od 0. Wartość ID wykorzystuje potem jako numery dokumentów i ładniej byłoby mieć dokumenty wypełnione zerami, tak aby każdy numer miał tyle samo cyfr. Czyli funkcja zerofill. Znalazłem poniższy kod:
I teraz mam pytania: 1. Czy w ogóle warto teraz coś zmieniać? jest to bezpieczne? 2. Czy to może wpłynąć na relacje, klucze obce, ogólną funkcjonalność bazy? 3. Czy ta zmiana byłaby od aktualnego Id czy uzupełniłaby zerami poprzednie rekordy również? 4. Czy id ustawione np. na INT(5) będzie dalej rosnąć po id=99999? Czy komputer wtedy wybuchnie? ![]() Ten post edytował mihmih 21.08.2015, 21:17:37 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
1. Nie, bo ...
2. Jeśli masz ustawione relacje to nie zmienisz, wywali błąd braku zgodności kolumn 3. Dla wszystkich o ile pkt. 2 4. Nic, po prostu zerofill dalej nie będzie miał co robić bo przekroczyłeś limit. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 1 Dołączył: 4.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
dziękuję za szybką odpowiedź
a czy jest inna funkcja, dzięki której w klauzuli SELECT będę mógł wyświetlić moje ID = 2345 jako 002345 a Id=678 jako 000678? Oczywiście CONCAT odpada, bo wtedy ilość zer będzie stała, a długość wyrażenia zmienna... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dokumentacja, dokumentacja.
https://dev.mysql.com/doc/refman/5.1/en/str...l#function_lpad -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 1 Dołączył: 4.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
dzięki
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
A czemu CONCAT odpada? Na CONCAT też można zrobić... SELECT RIGHT(CONCAT('00000', id), 5)
To samo co LPad |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Tja... to samo co LPAD tylko 100 razy dluzsze w zapisie i niestety nie uzywa samego CONCAT.... Moze wlasnie dlatego autor watku pisal, ze CONCAT odpada...
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 07:24 |