2010-12-09 3 views
0

Мне нужно сделать заказ для столбца nvarchar. Вопрос заключается в том, что столбец не имеет ту же структуру записи, пример некоторых строк столбцаOrder By Clause для столбца NVARCHAR в SQL Server

12  
9  
TEF  
78F  
T2R 

Как сортировать этот столбец по порядку По статье? Единственное облегчение, которое у меня есть, это то, что этот столбец содержит только числовые и буквенно-цифровые символы.

+2

Что вопрос вы столкнулись? Не работает ли `order by `? – 2010-12-09 11:19:59

+0

@Sachin Нет, он работает неправильно. Делая это, похоже, что это вовсе не сортировка записей – Zerotoinfinity 2010-12-09 11:28:34

+0

Итак, как это сортировать столбец примера? – 2010-12-09 11:29:39

ответ

4
ORDER BY 
    RIGHT(REPLICATE(N' ', 500) + MyValue, 500) 

Так

9 
12 
78F 
T2R 
TEF 

становится

  9 
      12 
      78F 
      T2R 
      TEF 

Какой будет сортировать правильно

Вы не можете полагаться на ISNUMERIC

0

Я предполагаю, что вы говорите, что он не правильно сортирует цифры и текст.

В данной статье описывается один подход:

How do I sort a VARCHAR column in SQL server that contains numbers?

Из статьи:

select MyColumn 
from MyTable 
order by 
    case IsNumeric(MyColumn) 
     when 1 then Replicate(Char(0), 100 - Len(MyColumn)) + MyColumn 
     else MyColumn 
    end 
2
select 
    * 
from 
    table 
order by 
    CASE 
     WHEN not column like '%[^0-9]%' THEN CONVERT(int,column) 
     WHEN column like '[0-9]%' THEN CONVERT(int,SUBSTRING(column,1,PATINDEX('%[A-Z]%',column)-1)) 
    END, 
    CASE 
     WHEN not column like '%[^0-9]%' THEN NULL 
     WHEN column like '[0-9]%' THEN SUBSTRING(column,PATINDEX('%[A-Z]%',column),9000) 
     ELSE column 
    END 

 Смежные вопросы

  • Нет связанных вопросов^_^