Níže jsou uvedeny příklady přidání úvodní nuly k číslu v SQL pomocí různých DBMS.
Oracle
Oracle má TO_CHAR(number)
funkce, která nám umožňuje přidat k číslu úvodní nuly. Výsledek vrátí jako řetězec v zadaném formátu.
SELECT TO_CHAR(7, '000')
FROM DUAL;
Výsledek:
007
0
formátovací prvek je výstupem úvodních nul. Pokud bychom nechtěli úvodní nuly, mohli bychom použít 9
.
Zde je srovnání mezi 0
a 9
abych demonstroval, co tím myslím:
SELECT
TO_CHAR(1234.456, '000G000D00') AS "0",
TO_CHAR(1234.456, '999G999D99') AS "9"
FROM DUAL;
Výsledek:
0 9 ______________ ______________ 001,234.46 1,234.46
G
je pro oddělovač skupiny a D
je pro oddělovač desetinných míst. Úplný seznam naleznete v tomto seznamu prvků formátu čísel.
Oracle má také LPAD()
funkce, která nám umožňuje doplnit číslo úvodními nulami (nebo jakýmkoli jiným znakem). Příklad viz 2 způsoby formátování čísla s úvodními nulami v Oracle.
PostgreSQL
PostgreSQL má také TO_CHAR()
a funguje jako stejnojmenná funkce Oracle:
SELECT TO_CHAR(7, '000');
Výsledek:
007
A zde je srovnání mezi 0
a 9
:
SELECT
TO_CHAR(1234.456, '000G000D00') AS "0",
TO_CHAR(1234.456, '999G999D99') AS "9";
Výsledek:
0 | 9 -------------+------------- 001,234.46 | 1,234.46
Úplný seznam vzorů šablon, které lze s touto funkcí v PostgreSQL použít, najdete v části Vzory šablon a modifikátory pro numerické formátování v Postgresu.
Stejně jako Oracle má PostgreSQL také LPAD()
funkce, která nám umožňuje doplňovat čísla úvodními nulami. Příklad viz 2 způsoby přidání úvodních nul v PostgreSQL.
MySQL
MySQL má LPAD()
funkce, která nám umožňuje vyplnit levou část řetězce nebo čísla námi zvoleným znakem nebo řadou znaků. Proto jej můžeme použít k doplnění našeho čísla nulami:
SELECT LPAD(7, 3, 0);
Výsledek:
007
Naštěstí můžeme číslo předat jako číselný typ, takže jej není nutné nejprve převádět na řetězec.
Další informace naleznete v části Jak přidat úvodní nuly k číslu v MySQL.
MariaDB
Stejně jako MySQL má MariaDB také LPAD()
funkce, která nám umožňuje vyplnit levou část řetězce nebo čísla námi zvoleným znakem nebo řadou znaků:
SELECT LPAD(7, 3, 0);
Výsledek:
007
A stejně jako u MySQL můžeme číslo předat jako číselný typ, takže jej není nutné nejprve převádět na řetězec.
Další informace naleznete v části Jak vyplnit číslo úvodními nulami v MariaDB.
SQL Server
SQL Server má FORMAT()
funkce, která nám umožňuje formátovat čísla pomocí formátovacího řetězce:
SELECT FORMAT(7, '000');
Výsledek:
007
Tady je to s oddělovačem skupin a oddělovačem desetinných míst:
SELECT FORMAT(1234, '0,000.00');
Výsledek:
1,234.00
Další informace naleznete v části Přidání počátečních a koncových nul na serveru SQL.
SQLite
SQLite má PRINTF()
funkce, kterou lze použít k přidání úvodních nul k číslu:
SELECT PRINTF('%03d', 7);
Výsledek:
007
Vysvětlení naleznete v části Jak formátovat čísla s úvodními nulami v SQLite.
Aktualizovat :SQLite 3.38.0 (vydáno 22. února 2022) přejmenováno na PRINTF()
funkce na FORMAT()
. Původní PRINTF()
jméno je zachováno jako alias pro zpětnou kompatibilitu.
Výše uvedený příklad lze tedy změnit na tento:
SELECT FORMAT('%03d', 7);
Výsledek:
007