Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

4 cách chuyển đổi một số thành một phần trăm trong SQL Server (T-SQL)

Dưới đây là 4 cách để chuyển đổi một số thành giá trị phần trăm trong SQL Server.

Nói một cách chính xác, chúng tôi không thực sự “chuyển đổi” nó thành phần trăm. Chúng tôi đang định dạng con số dưới dạng phần trăm. Nhưng để làm được điều đó, chúng ta cần chuyển đổi số từ kiểu dữ liệu số thành chuỗi.

Dưới đây là 4 cách để làm điều đó.

Ví dụ 1 - Hàm FORMAT ()

Lựa chọn rõ ràng nhất để sử dụng là FORMAT() hàm số. Điều này cho phép bạn hiển thị số và ngày ở một định dạng cụ thể.

Dưới đây là một ví dụ về việc sử dụng hàm này để hiển thị một số dưới dạng phần trăm:

SELECT FORMAT(55, 'P') Result;

Kết quả:

+------------+
| Result     |
|------------|
| 5,500.00 % |
+------------+

Lưu ý rằng bốn số không đã được thêm vào giá trị của chúng tôi (hai trước dấu thập phân và hai sau).

Những điều sau đây sẽ được yêu cầu để tạo ra 55 phần trăm này:

Kết quả
SELECT FORMAT(.55, 'P') Result;

Kết quả:

+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

Nếu con số là giá trị phần trăm thực tế mà bạn muốn, bạn có thể thực hiện điều này:

Kết quả
SELECT FORMAT(55 * .01, 'P') Result;

Kết quả:

+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

Bạn cũng có thể loại bỏ phần phân số bằng cách thêm số 0 vào công cụ định dạng:

Kết quả
SELECT FORMAT(.55, 'P0') Result;

Kết quả:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Nếu được yêu cầu, bạn cũng có thể thêm nhiều chữ số thập phân hơn:

Kết quả
SELECT FORMAT(.55123456, 'P7') Result;

Kết quả:

+--------------+
| Result       |
|--------------|
| 55.1234560 % |
+--------------+

Ví dụ 2 - Hàm CONVERT ()

Ngoài ra, bạn có thể sử dụng CONVERT() hàm chuyển số thành chuỗi, sau đó thêm dấu phần trăm vào cuối.

Tuy nhiên, điều này có vẻ hơi không cần thiết vì ví dụ trước đã thực hiện nó dễ dàng như thế nào, tuy nhiên, FORMAT() chức năng chỉ được giới thiệu trong SQL Server 2012. Do đó, đây là cách bạn cần thực hiện nếu sử dụng phiên bản SQL Server cũ hơn.

SELECT CONVERT(VARCHAR(4), 55) + ' %' Result;

Kết quả:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Tất nhiên, nếu số của bạn là .55 và bạn cần nó hiển thị là 55,00%, sau đó bạn luôn có thể nhân nó với 100:

SELECT CONVERT(VARCHAR(6), 0.55 * 100) + ' %' Result;

Kết quả:

+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

Trong trường hợp này, tôi cũng đã tăng kích thước của varchar kiểu dữ liệu để phục vụ cho các ký tự bổ sung.

Ngoài ra, bạn có thể loại bỏ phần phân số bằng cách sử dụng LEFT() chức năng:

SELECT CONVERT(VARCHAR(6), LEFT(0.55 * 100, 2)) + ' %' Result;

Kết quả:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Mặc dù bạn cần phải cẩn thận khi thực hiện việc này, vì giá trị thực tế có thể thay đổi nhiều hơn hoặc nhỏ hơn 2. Trong trường hợp đó, bạn có thể sử dụng TRIM() hàm để cắt các số không ở đầu và / hoặc dấu chấm ở cuối:

SELECT CONVERT(VARCHAR(6), TRIM('0,.' FROM LEFT(0.55 * 100, 3))) + ' %' Result;

Kết quả:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Tuy nhiên, điều này không hoàn hảo và FORMAT() chức năng rõ ràng cung cấp sự linh hoạt hơn rất nhiều với một lượng mã tối thiểu.

Ví dụ 3 - Hàm CAST ()

Ngoài ra, chúng ta có thể sử dụng CAST() để làm điều tương tự như ví dụ trước:

SELECT CAST(55 AS VARCHAR(4)) + ' %' Result;

Kết quả:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Lưu ý rằng CAST()CONVERT() sử dụng các cú pháp hơi khác nhau. Trong trường hợp của CAST() giá trị được truyền đến trước, trong khi đó ngược lại với CONVERT() .

Ví dụ 4 - CONCAT() Chức năng

Bạn cũng có thể sử dụng CONCAT() hàm để nối một số với dấu phần trăm:

Kết quả
SELECT CONCAT(55, ' %') Result;

Kết quả:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Hàm này chuyển đổi hoàn toàn tất cả các đối số thành kiểu chuỗi trước khi nối.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để bạn thêm một cột NOT NULL vào một bảng lớn trong SQL Server?

  2. Cách chọn ngày không có thời gian trong SQL

  3. LIKE so với CONTAINS trên SQL Server

  4. Tạo một hàm có giá trị bảng trong SQL Server

  5. Tại sao CTE lại tốt hơn con trỏ / bảng dẫn xuất / truy vấn con / bảng tạm thời, v.v.?