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

Thêm Zeros dẫn đầu &theo sau trong SQL Server

Một số DBMS có LPAD()RPAD() hàm có thể được sử dụng để đệm số bằng các số không ở đầu và ở cuối.

SQL Server không có chức năng như vậy. Nhưng điều đó không ngăn cản chúng ta có thể thêm vào các số bằng các số không ở đầu / ở cuối.

Không phải số nguyên

Đầu tiên, hãy xem xét các số không phải là số nguyên:

SELECT 
    FORMAT(7, '000.00') AS "1",
    FORMAT(17, '000.00') AS "2",
    FORMAT(73.5, '000.00') AS "3";

Kết quả:

+--------+--------+--------+
| 1      | 2      | 3      |
|--------+--------+--------|
| 007.00 | 017.00 | 073.50 |
+--------+--------+--------+

Ở đây, chúng tôi sử dụng FORMAT() chức năng định dạng số. Đối số đầu tiên là số và đối số thứ hai là chuỗi định dạng. Hàm xuất ra kết quả của nó dưới dạng một chuỗi được định dạng.

Trong ví dụ trên, chuỗi định dạng bao gồm các chỉ định định dạng số tùy chỉnh dẫn đến số gốc được thêm các số không vào những vị trí không có chữ số nào trong số ban đầu. Chúng tôi có thể sử dụng bao nhiêu số không trong chuỗi định dạng nếu chúng tôi cần.

SELECT 
    FORMAT(7, '00000.0000') AS "1",
    FORMAT(17, '00000.0000') AS "2",
    FORMAT(73.5, '00000.0000') AS "3";

Kết quả:

+------------+------------+------------+
| 1          | 2          | 3          |
|------------+------------+------------|
| 00007.0000 | 00017.0000 | 00073.5000 |
+------------+------------+------------+

Số nguyên

Nếu số ban đầu là số nguyên, thì chúng ta cần thực hiện thêm một chút công việc:

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

Kết quả:

+-----------+-----------+-----------+
| 1         | 2         | 3         |
|-----------+-----------+-----------|
| 000070000 | 000170000 | 000735000 |
+-----------+-----------+-----------+

Ở đây, tôi đã sử dụng REPLACE() chức năng xóa dấu chấm thập phân sau khi số đã được định dạng với nó.

Tôi đã sử dụng rõ ràng en-US là đố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 đủ chứ không phải ký tự khác, chẳng hạn như dấu phẩy. Một số ngôn ngữ sử dụng dấu phẩy làm dấu phân tách thập phân. Nếu chúng tôi không chỉ định rõ ràng ngôn ngữ từ bên trong hàm, thì ngôn ngữ của phiên hiện tại sẽ được sử dụng. Việc chỉ định rõ ràng ngôn ngữ từ bên trong hàm đảm bảo rằng ngôn ngữ của phiên hiện tại không được sử dụng và do đó, không thể can thiệp vào hoạt động thay thế của chúng tôi.

Azure SQL Edge

Azure SQL Edge được xây dựng dựa trên việc triển khai có giới hạn của SQL Server Database Engine và do đó nó hỗ trợ hầu hết các chức năng T-SQL mà chúng ta có thể sử dụng với SQL Server. Tuy nhiên, tại thời điểm viết bài, SQL Edge không hỗ trợ T-SQL FORMAT() chức năng.

Xem Cách thêm Zeros dẫn đầu &theo sau trong Azure SQL Edge để biết phương pháp thay thế (cũng hoạt động trong SQL Server).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiệu suất kế hoạch thực thi thủ tục được lưu trữ kém trong SQL - đánh hơi tham số

  2. Xóa thư cơ sở dữ liệu khỏi cơ sở dữ liệu msdb trong SQL Server (T-SQL)

  3. Làm thế nào để thay thế nhiều ký tự trong SQL?

  4. PARSE () so với TRY_PARSE () trong SQL Server:Sự khác biệt là gì?

  5. SQL Server 2016:Tạo bảng từ tập lệnh SQL