sql >> Databáze >  >> RDS >> Sqlserver

Přidejte počáteční a koncové nuly na SQL Server

Některé DBMS mají LPAD() a RPAD() funkce, kterou lze použít k doplnění čísel úvodními a koncovými nulami.

SQL Server takovou funkci nemá. To nám ale nebrání v tom, abychom čísla mohli doplňovat nulami na začátku/na konci.

Necelá čísla

Nejprve se podívejme na necelá čísla:

SELECT 
    FORMAT(7, '000.00') AS "1",
    FORMAT(17, '000.00') AS "2",
    FORMAT(73.5, '000.00') AS "3";

Výsledek:

+--------+--------+--------+
| 1      | 2      | 3      |
|--------+--------+--------|
| 007.00 | 017.00 | 073.50 |
+--------+--------+--------+

Zde používáme FORMAT() funkce pro formátování čísla. První argument je číslo a druhý argument je formátovací řetězec. Funkce vydá svůj výsledek jako formátovaný řetězec.

Ve výše uvedeném příkladu se formátovací řetězec skládá z vlastních číselných specifikátorů formátu, což vede k tomu, že původní číslo má nuly na místech, kde v původním čísle není žádná číslice. Ve formátovacím řetězci můžeme použít tolik nul, kolik potřebujeme.

SELECT 
    FORMAT(7, '00000.0000') AS "1",
    FORMAT(17, '00000.0000') AS "2",
    FORMAT(73.5, '00000.0000') AS "3";

Výsledek:

+------------+------------+------------+
| 1          | 2          | 3          |
|------------+------------+------------|
| 00007.0000 | 00017.0000 | 00073.5000 |
+------------+------------+------------+

Celá čísla

Pokud je původní číslo celé číslo, pak musíme udělat trochu více práce:

SELECT 
    REPLACE(FORMAT(7, '00000.0000', 'en-US'), '.', '') AS "1",
    REPLACE(FORMAT(17, '00000.0000', 'en-US'), '.', '') AS "2",
    REPLACE(FORMAT(73.5, '00000.0000', 'en-US'), '.', '') AS "3";

Výsledek:

+-----------+-----------+-----------+
| 1         | 2         | 3         |
|-----------+-----------+-----------|
| 000070000 | 000170000 | 000735000 |
+-----------+-----------+-----------+

Zde jsem použil REPLACE() funkce k odstranění desetinné čárky poté, co bylo číslo naformátováno.

Explicitně jsem použil en-US jako (nepovinný) třetí argument, který zajistí, že oddělovač desetinných míst je tečka/tečka a ne jiný znak, jako je čárka. Některá národní prostředí používají jako oddělovač desetinných míst čárku. Pokud explicitně neurčíme národní prostředí z funkce, použije se národní prostředí aktuální relace. Explicitní zadání národního prostředí v rámci funkce zajišťuje, že není použito národní prostředí aktuální relace, a proto nemůže zasahovat do naší operace nahrazení.

Azure SQL Edge

Azure SQL Edge je postaven na omezené implementaci databázového stroje SQL Server, a proto podporuje většinu funkcí T-SQL, které můžeme s SQL Serverem používat. V době psaní tohoto článku však SQL Edge nepodporuje T-SQL FORMAT() funkce.

Alternativní metodu (která funguje také na SQL Serveru) najdete v tématu Jak přidat počáteční a koncové nuly v Azure SQL Edge.


  1. žádný sqljdbc_auth v java.library.path

  2. Přístup k databázi jedné aplikace z jiné aplikace

  3. Jak funguje funkce MAKE_SET() v MySQL

  4. FNDCPASS &AFPASSWD