Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL сортиране на числови низове след разделяне

Изпълнявайте низови функции във вашия ORDER BY за премахване само на номера. Нещо подобно трябва да работи:

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)

Това първо ще премахне IS- и проверете дали останалата част от низа е число. Ако е така, ще остави десетичните цифри, в противен случай ще премахне . и следните буквени знаци.

Това предполага, че планираното ви подреждане в случай на числови десетични знаци ще бъде:

IS-123.A
IS-123.1
IS-123.2

Ако не ви интересува какво има след десетичната запетая/точка, тогава просто:

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. TSQL - Съединение с използване на пълен текст СЪДЪРЖА

  2. вмъкнете XML файл в SQL чрез SSIS

  3. Съвместимост с SQL Server 2008 + PCI? Отнася се за PCI, както и за симетрични ключове!

  4. Грешка 'datetime2' при използване на структура на обект в VS 2010 .net 4.0

  5. Грешка 0xc0202049:Задача на потока от данни 1:Неуспешно вмъкване в колоната само за четене