Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Urutkan String Numerik Setelah Split

Lakukan fungsi string di ORDER BY untuk menghapus hanya nomor. Sesuatu seperti ini seharusnya bekerja:

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)

Ini pertama-tama akan menghapus IS- dan periksa apakah sisa string adalah angka. Jika ya, itu akan meninggalkan angka desimal, jika tidak maka akan menghapus . dan karakter alfa berikut.

Ini dengan asumsi pengurutan yang Anda maksudkan dalam kasus tempat desimal numerik adalah:

IS-123.A
IS-123.1
IS-123.2

Jika Anda tidak peduli dengan angka setelah desimal/titik, cukup:

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. Apa cara mengisi daftar dropdown dari database di asp.net dengan menggunakan kelas?

  2. Kemungkinan Cara untuk Memperbaiki Masalah Korupsi Metadata SQL Server

  3. SQL Server:Lampirkan versi yang salah 661

  4. Bergabunglah dengan tabel untuk dirinya sendiri

  5. Kapan kita harus menggunakan NVARCHAR/NCHAR daripada VARCHAR/CHAR di SQL Server?