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

Sắp xếp SQL chuỗi số sau khi tách

Thực hiện các hàm chuỗi trong ORDER BY của bạn để chỉ xóa số. Một cái gì đó như thế này sẽ hoạt động:

SELECT col
FROM table
ORDER BY CAST(CASE WHEN ISNUMERIC(SUBSTRING(col,4,20)) = 1
              THEN SUBSTRING(col,4,20)
              ELSE LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1)
         END AS NUMERIC)

Điều này trước tiên sẽ xóa IS- và kiểm tra xem phần còn lại của chuỗi có phải là số hay không. Nếu đúng, nó sẽ để lại các chữ số thập phân, nếu không, nó sẽ xóa . và các ký tự alpha sau.

Điều này giả sử thứ tự dự định của bạn trong trường hợp chữ số thập phân sẽ là:

IS-123.A
IS-123.1
IS-123.2

Nếu bạn không quan tâm đến những gì sau dấu thập phân / dấu chấm, thì chỉ cần:

ORDER BY CAST(LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1) AS NUMERIC)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng con trỏ để cập nhật bản ghi

  2. Tạo một bảng được phân vùng trong SQL Server (T-SQL)

  3. Kiểm tra ràng buộc:TRY / CATCH so với Tồn tại ()

  4. Làm cách nào để kết nối với cơ sở dữ liệu SQL Server trong CodeIgniter?

  5. LPAD trong SQL Server 2008