SQL Server Ordery By - PullRequest
       6

SQL Server Ordery By

0 голосов
/ 04 сентября 2018

У меня есть данные в формате ниже в таблице SQL Server. Тип данных столбцов nVarchar

(File # 1) abcde
(File # 3) abdddd
(File # 4) asdfas
(File # 7) ououoiu
(File # 6) ooiuoi
(File # 5) werwer
(File # 2) oiouoiu
(File # 10) xcvzx
(File # 11) cxzvz
(File # 20) zxcvzx and so on....

когда я использую заказ по предложению в вышеупомянутом столбце, я получаю результат, как показано ниже ...

(File # 1) abcde
(File # 10) xcvzx
(File # 11) cxzvz
(File # 2) oiouoiu
(File # 20) zxcvzx
(File # 3) abdddd
(File # 4) asdfas
(File # 5) werwer
(File # 6) ooiuoi
(File # 7) ououoiu

Как исправить ....

1 Ответ

0 голосов
/ 04 сентября 2018

Если всегда есть один и тот же формат (file # .....), есть простое решение:

order by charindex(')', col), col

Edit:

Извлекает первую группу цифр и преобразует ее в INT

.
ORDER BY
    CAST(CASE WHEN PATINDEX('%[0-9]%',col) > 0
              THEN SUBSTRING(SUBSTRING(col,PATINDEX('%[0-9]%',col),100), 1, PATINDEX('%[^0-9]%', SUBSTRING(col,PATINDEX('%[0-9]%',col),100)+'#')-1) 
              ELSE '0'
          END AS FLOAT)
    ,col

Было бы намного проще, если бы SQL Server поддерживал регулярные выражения: -)

...