Niektóre RDBMS zapewniają funkcję LPAD()
i RPAD()
funkcja, która pozwala nam wstawić lewy lub prawy smyczek struny. Niektóre funkcje pozwalają nam również dodawać początkowe lub końcowe zera.
Poniżej znajdują się przykłady zastosowania dopełnienia SQL w niektórych bardziej popularnych systemach RDBMS.
Wyrocznia
Oracle udostępnia nam LPAD()
i RPAD()
specjalnie do dopełniania lewej lub prawej części ciągu:
SELECT LPAD('Cat', 20)
FROM DUAL;
Wynik:
LPAD('CAT',20) _______________________ Cat
W tym przypadku użyłem LPAD()
zastosować lewe dopełnienie, a wynikowy ciąg ma 20 znaków, ponieważ tego użyłem dla drugiego argumentu.
Wynik jest uzupełniany spacją, ponieważ jest to domyślny znak używany do wypełniania. Jeśli nie określisz, jakim znakiem uzupełnić ciąg, zostanie użyta spacja.
Możesz dodać trzeci znak, aby określić, którego znaku użyć do wypełnienia:
SELECT LPAD('7', 3, '0')
FROM DUAL;
Wynik:
LPAD('7',3,'0') __________________ 007
W tym przypadku uzupełniłem liczbę zerami (chociaż wynikiem jest łańcuch).
Oracle ma również TO_CHAR(number)
funkcja, której można użyć do dodawania wiodących zer do liczby:
SELECT TO_CHAR(7, 'fm000')
FROM DUAL;
Wynik:
007
0
element formatu reprezentuje każdą cyfrę w oryginalnej liczbie i zero, jeśli żadna cyfra nie istnieje w tej pozycji w oryginalnej liczbie.
PostgreSQL
PostgreSQL ma również własną LPAD()
i RPAD()
funkcje:
SELECT
LPAD('7', 3, '0') AS "Left Padding",
RPAD('7', 3, '0') AS "Right Padding",
LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";
Wynik:
Left Padding | Right Padding | Both --------------+---------------+------- 007 | 700 | 00700
Ma też swój własny TO_CHAR()
funkcja, która działa podobnie do funkcji Oracle o tej samej nazwie:
SELECT TO_CHAR(7, 'fm000');
Wynik:
007
MariaDB
MariaDB ma własną LPAD()
i RPAD()
funkcje:
SELECT
LPAD('7', 3, '0') AS "Left Padding",
RPAD('7', 3, '0') AS "Right Padding",
LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";
Wynik:
+--------------+---------------+-------+ | Left Padding | Right Padding | Both | +--------------+---------------+-------+ | 007 | 700 | 00700 | +--------------+---------------+-------+
I chociaż MariaDB ma swoją własną TO_CHAR()
funkcja, nie działa na liczbach (ogranicza się do wartości datetime).
MySQL
MySQL ma również własną LPAD()
i RPAD()
funkcje.
Oto przykład użycia LPAD()
względem kolumny bazy danych:
SELECT Genre, LPAD(Genre, 10, '.')
FROM Genres;
Wynik:
+---------+----------------------+ | Genre | LPAD(Genre, 10, '.') | +---------+----------------------+ | Rock | ......Rock | | Jazz | ......Jazz | | Country | ...Country | | Pop | .......Pop | | Blues | .....Blues | | Hip Hop | ...Hip Hop | | Rap | .......Rap | | Punk | ......Punk | +---------+----------------------+
Serwer SQL
SQL Server jest trochę anomalią, ponieważ nie ma funkcji LPAD()
lub RPAD()
funkcja.
Jednak SQL Server ma funkcję FORMAT()
funkcja, która pozwala nam łatwo uzupełniać liczby wiodącymi zerami:
SELECT FORMAT(7, '000');
Wynik:
007
Drugi argument to niestandardowy ciąg formatu liczbowego, który określa, ile znaków będzie miał wynikowy ciąg. Fakt, że użyłem zer, oznacza, że w razie potrzeby wynik będzie miał wiodące zera.
Aby uzupełnić ciągi w SQL Server, możemy zrobić coś takiego:
SELECT RIGHT('.......' + 'Cat', 7);
Wynik:
....Cat
Istnieje wiele innych technik, których możemy użyć do zastosowania dopełnienia w SQL Server.