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

Nối một chuỗi và một số trong SQL

Trong hầu hết các trường hợp, nối một chuỗi và một số trong SQL không khác gì nối hai chuỗi.

Hầu hết các DBMS sẽ nối chuỗi và số như thể chúng là cả hai chuỗi. Điều này là do số thường được chuyển đổi thành chuỗi trước khi thực hiện thao tác nối.

Hầu hết các RDBMS chính đều cung cấp CONCAT() hàm cho các phép toán nối, cũng như một CONCAT_WS() cho phép bạn chỉ định dấu phân tách để phân tách các đối số được nối.

Hầu hết các RDBMS chính cũng bao gồm một toán tử nối chuỗi, cho phép chúng ta nối các toán hạng của nó.

CONCAT() Chức năng

Hầu hết các RDBMS chính đều cung cấp CONCAT() hàm để nối các đối số chuỗi của nó. Nói chung, các đối số không phải là chuỗi được chuyển đổi thành chuỗi trước khi quá trình nối xảy ra.

Ví dụ:

SELECT CONCAT('Player', 456);

Kết quả:

Player456

Nếu chúng ta muốn bao gồm một khoảng trắng giữa các đối số được nối, chúng ta có thể thêm một khoảng trắng vào một trong các chuỗi hoặc bao gồm một khoảng trắng dưới dạng một đối số riêng biệt:

SELECT 
    CONCAT('Player ', 456) AS "Option 1",
    CONCAT('Player', ' ', 456) AS "Option 2";

Kết quả:

+------------+------------+
| Option 1   | Option 2   |
+------------+------------+
| Player 456 | Player 456 |
+------------+------------+

RDBMS có CONCAT() chức năng bao gồm MySQL, MariaDB, SQL Server, Oracle và PostgreSQL.

SQLite không có CONCAT() hàm số. SQLite không có một toán tử nối chuỗi (xem bên dưới).

CONCAT_WS() Chức năng

Một cách khác để bao gồm khoảng trắng là sử dụng CONCAT_WS() hàm số. Hàm này cho phép bạn chỉ định một dấu phân tách sẽ được sử dụng để phân tách tất cả các đối số được nối.

Ví dụ:

SELECT CONCAT_WS(' ', 'Player', 456);

Kết quả:

Player 456 

Hàm này có thể đặc biệt hữu ích nếu bạn có nhiều đối số để nối:

SELECT CONCAT_WS(', ', 'Red', 2, 'Green', 456, 'Black');

Kết quả:

Red, 2, Green, 456, Black

Trong những trường hợp như vậy, bạn chỉ cần chỉ định dấu phân tách một lần. Trong ví dụ này, tôi đã chỉ định dấu phẩy và dấu cách làm dấu phân cách.

RDBMS có CONCAT_WS() bao gồm MySQL, MariaDB, SQL Server và PostgreSQL.

SQLite và Oracle không có CONCAT_WS() chức năng, nhưng chúng làm có một toán tử nối chuỗi (xem bên dưới).

Toán tử ghép chuỗi

Hầu hết các RDBMS đều bao gồm toán tử nối chuỗi nối các toán hạng của nó.

Nếu bạn đang sử dụng SQLite, đây là lựa chọn duy nhất của bạn.

Ví dụ:

SELECT 'Player' || 456;

Kết quả:

Player456

Lưu ý rằng trong MySQL, trước tiên bạn cần bật toán tử nối ống dẫn.

Tương tự với MariaDB.

Máy chủ SQL

Ví dụ trên sẽ không hoạt động trong SQL Server. Trong SQL Server, sử dụng dấu cộng (+ ) toán tử nối chuỗi.

Ngoài ra, số cũng sẽ cần được chuyển đổi thành một chuỗi trước khi cố gắng nối:

SELECT 'Player' + CAST(456 AS varchar(3));

Kết quả:

Player456

Đây là những gì sẽ xảy ra nếu tôi cố gắng làm điều đó mà không chuyển đổi số thành chuỗi trước:

SELECT 'Player' + 456;

Kết quả:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Player' to data type int.

SQL Server cho rằng chúng tôi đang cố gắng thêm hai số (bởi vì + cũng là toán tử cộng) và do đó trả về lỗi, do một trong các toán hạng là một chuỗi.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Các tài liệu phụ Mongoose so với lược đồ lồng nhau

  2. Làm thế nào để thiết lập useMongoClient (Mongoose 4.11.0)?

  3. Tự động xóa các đối tượng tham chiếu khi xóa trong MongoDB

  4. MongoDb:Lợi ích của việc sử dụng ObjectID so với chuỗi chứa Id?

  5. Làm cách nào để trả về kết quả Mongoose từ phương thức find?