MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

SQL RPAD ()

Trong SQL, RPAD() được sử dụng để đệm phần bên phải của một chuỗi với một ký tự được chỉ định. Hàm có thể được sử dụng trên chuỗi và số, mặc dù tùy thuộc vào DBMS, các số có thể phải được chuyển dưới dạng chuỗi trước khi chúng có thể được đệm.

DBMS có RPAD() bao gồm MySQL, MariaDB, PostgreSQL và Oracle.

DBMSs không RPAD() chức năng bao gồm SQL Server và SQLite.

Ví dụ

Đây là một ví dụ để chứng minh RPAD() chức năng:

SELECT RPAD('Look Right', 40);

Kết quả:

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

Ở đây, phần bên phải của chuỗi được đệm bằng khoảng trắng (ký tự đệm mặc định) và chuỗi kết quả dài 40 ký tự (vì tôi đã chỉ định 40 như đối số thứ hai).

Oracle hoạt động tương tự, nhưng chúng ta cần sử dụng FROM DUAL khi thực hiện một truy vấn như thế này (không truy vấn một bảng thực tế):

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

Kết quả:

                       RPAD('LOOKRIGHT',40) 
___________________________________________ 
Look Right                                 

Trong các ví dụ trên, tôi đã sử dụng rất nhiều phần đệm để làm cho phần đệm rõ ràng.

Dưới đây là một ví dụ khác có thể chứng minh phần đệm bên phải rõ ràng hơn:

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

Kết quả:

abc def

Trong trường hợp này, tôi đã nối abc với def nhưng abc đã áp dụng phần đệm bên phải với RPAD() chức năng.

Chỉ định một ký tự đệm

Phần đệm không nhất thiết phải là khoảng trống. Chúng tôi có thể tùy chọn thêm đối số thứ ba để chỉ định ký tự (hoặc các ký tự) để sử dụng trong phần đệm.

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

Kết quả:

Ratt

Nó cũng có thể được sử dụng để đệm các số bên phải bằng số 0 (hoặc một chữ số khác):

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

Kết quả:

700

Điều này rõ ràng làm thay đổi số và trong trường hợp này, điều tương tự có thể đạt được chỉ đơn giản bằng cách nhân số với 100. Tuy nhiên, việc nhân một số không thực sự áp dụng đệm cho nó.

Ví dụ sau đây chứng minh ý tôi muốn nói:

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

Kết quả:

770

Nhân 77 với 100 sẽ có kết quả sai.

Trong các ví dụ trên, tôi đã chuyển số dưới dạng chuỗi.

Trong một số DBMS (chẳng hạn như MariaDB và MySQL), chúng ta có thể chuyển số dưới dạng số, cũng như số để đệm nó với:

SELECT RPAD(7, 3, 0);

Kết quả:

700

Chúng tôi cũng có thể làm điều này trong Oracle:

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

Kết quả:

700

Nhưng PostgreSQL có vấn đề với điều này:

SELECT RPAD(7, 3, 0);

Kết quả:

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

Máy chủ SQL

Máy chủ SQL không có RPAD() nhưng điều đó không ngăn chúng tôi thêm phần đệm vào số và chuỗi.

Số

Nếu số có phần thập phân, thì FORMAT() hàm sẽ đủ:

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

Kết quả:

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

Cách thức hoạt động là chúng ta chuyển số, theo sau là một chuỗi định dạng. Trong ví dụ trên, chuỗi định dạng bao gồm các từ định dạng số tùy chỉnh dẫn đến số ban đầu có các chữ số được thêm vào phần phân số của nó. Nếu chưa có nhiều chữ số như vậy trong số ban đầu, thì nó sẽ được đệm bằng các số không.

Nhưng nếu số không có phần thập phân, thì chúng ta có thể sử dụng REPLACE() chức năng xóa dấu phân tách thập phân được áp dụng với FORMAT() chức năng:

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

Kết quả:

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

Phương pháp này cũng có thể được sử dụng để thêm các số 0 ở đầu nếu cần. Chỉ cần thêm chúng vào bên trái dấu thập phân trong chuỗi định dạng.

Ở đây, Tôi đã sử dụng rõ ràng en-US làm đối số thứ ba (tùy chọn) để đảm bảo rằng dấu phân tách thập phân là dấu chấm / dấu chấm đầy đủ, đây là quy ước được sử dụng bởi en-US ngôn ngữ.

Văn bản

Dưới đây là một kỹ thuật có thể được sử dụng trên dữ liệu văn bản:

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

Kết quả:

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

Mặc dù bạn sẽ cần phải cẩn thận để không vô tình cắt một phần của chuỗi hoặc thêm các khoảng trắng không mong muốn.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách kết nối với MySQL mà không cần mật khẩu gốc trên thiết bị đầu cuối

  2. Tổng hợp $ tra cứu với C #

  3. Nhập dữ liệu vào MongoDB từ tệp JSON bằng Java

  4. MongoDB E11000 lỗi khóa trùng lặp

  5. Meteor và DBRefs