MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

SQL RPAD()

Dalam SQL, RPAD() digunakan untuk mengisi bagian kanan string dengan karakter tertentu. Fungsi ini dapat digunakan pada string dan angka, meskipun tergantung pada DBMS, angka mungkin harus dilewatkan sebagai string sebelum dapat diisi.

DBMS yang memiliki RPAD() fungsi termasuk MySQL, MariaDB, PostgreSQL, dan Oracle.

DBMS yang tidak memiliki RPAD() fungsi termasuk SQL Server dan SQLite.

Contoh

Berikut adalah contoh untuk mendemonstrasikan RPAD() fungsi:

SELECT RPAD('Look Right', 40);

Hasil:

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

Di sini, bagian kanan string diisi dengan spasi (karakter pengisi default), dan string yang dihasilkan panjangnya 40 karakter (karena saya menetapkan 40 sebagai argumen kedua).

Oracle bekerja dengan cara yang sama, tetapi kita perlu menggunakan FROM DUAL saat melakukan kueri seperti ini (tanpa menanyakan tabel yang sebenarnya):

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

Hasil:

                       RPAD('LOOKRIGHT',40) 
___________________________________________ 
Look Right                                 

Dalam contoh di atas, saya menggunakan banyak padding untuk membuat padding terlihat jelas.

Berikut contoh lain yang dapat menunjukkan padding yang tepat dengan lebih jelas:

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

Hasil:

abc def

Dalam hal ini, saya menggabungkan abc dengan def tapi abc memiliki padding yang tepat diterapkan dengan RPAD() fungsi.

Tentukan Karakter Padding

Padding tidak harus berupa ruang. Secara opsional, kita dapat menambahkan argumen ketiga untuk menentukan karakter (atau karakter) yang akan digunakan dalam padding.

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

Hasil:

Ratt

Ini juga dapat digunakan untuk nomor pad kanan dengan nol (atau digit lain):

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

Hasil:

700

Ini jelas mengubah angka dan dalam hal ini, hal yang sama dapat dicapai hanya dengan mengalikan angka dengan 100. Namun, mengalikan angka sebenarnya tidak menerapkan padding.

Contoh berikut menunjukkan apa yang saya maksud:

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

Hasil:

770

Mengalikan 77 dengan 100 akan menghasilkan hasil yang salah.

Dalam contoh di atas saya memberikan nomor sebagai string.

Di beberapa DBMS (seperti MariaDB dan MySQL) kita dapat memberikan nomor sebagai nomor, serta nomor untuk diisi dengan:

SELECT RPAD(7, 3, 0);

Hasil:

700

Kami juga dapat melakukan ini di Oracle:

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

Hasil:

700

Tetapi PostgreSQL memiliki masalah dengan ini:

SELECT RPAD(7, 3, 0);

Hasil:

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

SQL Server

SQL Server tidak memiliki RPAD() fungsi, tetapi itu tidak menghentikan kami untuk menambahkan padding ke angka dan string.

Angka

Jika bilangan tersebut memiliki bagian pecahan, FORMAT() fungsi akan cukup:

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

Hasil:

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

Cara kerjanya adalah kita melewati nomor, diikuti dengan string format. Dalam contoh di atas, string format terdiri dari penentu format numerik khusus yang menghasilkan angka asli yang ditambahkan digit ke bagian pecahannya. Jika angka aslinya belum sebanyak itu, maka diisi dengan nol.

Tetapi jika bilangan tersebut tidak memiliki bagian pecahan, maka kita dapat menggunakan REPLACE() berfungsi untuk menghapus pemisah desimal yang diterapkan dengan FORMAT() fungsi:

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";

Hasil:

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

Metode ini juga dapat digunakan untuk menambahkan nol di depan jika diperlukan. Cukup tambahkan di sebelah kiri titik desimal dalam format string.

Di sini, Saya secara eksplisit menggunakan en-US sebagai argumen ketiga (opsional) untuk memastikan bahwa pemisah desimal adalah titik/titik, yang merupakan konvensi yang digunakan oleh en-US lokal.

Teks

Berikut teknik yang dapat digunakan pada data tekstual:

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

Hasil:

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

Meskipun Anda harus berhati-hati untuk tidak memotong bagian string secara tidak sengaja, atau menambahkan spasi yang tidak diinginkan.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara Menggunakan Pemodelan Data MongoDB untuk Meningkatkan Operasi Throughput

  2. Otomatiskan Pemeriksaan Konfigurasi Basis Data

  3. Bagaimana cara menambahkan data ke array dalam Skema Mongoose

  4. Ganti nama Bidang dalam Koleksi MongoDB

  5. MongoDB $mod