MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

SQL RPAD()

W SQL RPAD() służy do wypełnienia prawej części ciągu określonym znakiem. Funkcja może być używana na ciągach i liczbach, chociaż w zależności od DBMS, liczby muszą być przekazane jako ciąg, zanim będą mogły zostać uzupełnione.

DBMS, które mają RPAD() funkcja obejmuje MySQL, MariaDB, PostgreSQL i Oracle.

DBMS, których nie mieć RPAD() funkcja obejmuje SQL Server i SQLite.

Przykład

Oto przykład demonstrujący RPAD() funkcja:

SELECT RPAD('Look Right', 40);

Wynik:

+------------------------------------------+
| RPAD('Look Right', 40)                   |
+------------------------------------------+
| Look Right                               |
+------------------------------------------+

Tutaj prawa część ciągu jest uzupełniona spacją (domyślny znak wypełniający), a wynikowy ciąg ma długość 40 znaków (ponieważ określiłem 40 jako drugi argument).

Oracle działa tak samo, ale musimy użyć FROM DUAL wykonując zapytanie w ten sposób (bez odpytywania rzeczywistej tabeli):

SELECT RPAD('Look Right', 40) 
FROM DUAL;

Wynik:

                       RPAD('LOOKRIGHT',40) 
___________________________________________ 
Look Right                                 

W powyższych przykładach użyłem dużo dopełnienia, aby było widoczne.

Oto kolejny przykład, który może wyraźniej zademonstrować prawidłowe wypełnienie:

SELECT CONCAT(RPAD('abc', 4), 'def');

Wynik:

abc def

W tym przypadku połączyłem abc z def ale abc miał prawo dopełnienia zastosowane z RPAD() funkcja.

Określ znak wypełniający

Wypełnienie niekoniecznie musi być spacją. Możemy opcjonalnie dodać trzeci argument, aby określić znak (lub znaki) do użycia w dopełnieniu.

SELECT RPAD('Rat', 4, 't');

Wynik:

Ratt

Może być również używany do poprawiania numerów padów za pomocą zer (lub innej cyfry):

SELECT RPAD('7', 3, '0');

Wynik:

700

To oczywiście zmienia liczbę i w tym przypadku to samo można było osiągnąć po prostu mnożąc liczbę przez 100. Jednak mnożenie liczby nie powoduje zastosowania do niej dopełnienia.

Poniższy przykład pokazuje, co mam na myśli:

SELECT RPAD('77', 3, '0');

Wynik:

770

Pomnożenie 77 przez 100 dałoby zły wynik.

W powyższych przykładach podałem liczbę jako ciąg znaków.

W niektórych DBMS-ach (takich jak MariaDB i MySQL) możemy przekazać liczbę jako liczbę, jak również liczbę do uzupełnienia:

SELECT RPAD(7, 3, 0);

Wynik:

700

Możemy to również zrobić w Oracle:

SELECT RPAD(7, 3, 0) 
FROM DUAL;

Wynik:

700

Ale PostgreSQL ma z tym problem:

SELECT RPAD(7, 3, 0);

Wynik:

ERROR:  function rpad(integer, integer, integer) does not exist

Serwer SQL

SQL Server nie ma funkcji RPAD() funkcji, ale to nie powstrzymuje nas przed dodawaniem dopełnienia do liczb i ciągów.

Liczby

Jeśli liczba ma część ułamkową, FORMAT() funkcja wystarczy:

SELECT 
    FORMAT(0.7, '.000') AS "1",
    FORMAT(0.7, '0.00') AS "2",
    FORMAT(7.0, '0.00') AS "3";

Wynik:

+------+------+------+
| 1    | 2    | 3    |
|------+------+------|
| .700 | 0.70 | 7.00 |
+------+------+------+

Działa to tak, że przekazujemy liczbę, po której następuje ciąg formatu. W powyższym przykładzie ciąg formatu składa się z niestandardowych specyfikatorów formatu liczbowego, co powoduje, że oryginalna liczba zawiera cyfry dodawane do części ułamkowej. Jeśli w oryginalnej liczbie nie ma już tylu cyfr, jest ona dopełniana zerami.

Ale jeśli liczba nie ma części ułamkowej, możemy użyć REPLACE() funkcja do usuwania separatora dziesiętnego stosowanego za pomocą FORMAT() funkcja:

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

Wynik:

+-----+------+------+
| 1   | 2    | 3    |
|-----+------+------|
| 700 | 1700 | 7350 |
+-----+------+------+

Ta metoda może być również używana do dodawania wiodących zer, jeśli jest to wymagane. Po prostu dodaj je po lewej stronie kropki dziesiętnej w ciągu formatu.

Tutaj Ja jawnie użyłem en-US jako (opcjonalny) trzeci argument, aby zapewnić, że separatorem dziesiętnym jest kropka/kropka, zgodnie z konwencją używaną przez en-US lokalizacja.

Tekst

Oto technika, której można użyć na danych tekstowych:

SELECT 
    LEFT('Dog' + '.........', 9) AS "1",
    LEFT('Horse' + '.........', 9) AS "2",
    LEFT('Crocodile' + '.........', 9) AS "3";

Wynik:

+-----------+-----------+-----------+
| 1         | 2         | 3         |
|-----------+-----------+-----------|
| Dog...... | Horse.... | Crocodile |
+-----------+-----------+-----------+

Chociaż musisz uważać, aby przypadkowo nie odciąć części sznurka lub dodać niechcianych spacji.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Warunek zapytania MongoDb przy porównaniu 2 pól

  2. Jak formatować liczby za pomocą przecinków w SQL?

  3. Przełączanie awaryjne replikacji MySQL (i innych) — czy powinno być zautomatyzowane?

  4. Najlepsze zasoby MongoDB

  5. Dlaczego Mongoose ma zarówno schematy, jak i modele?