Я собираюсь сортировать этот столбец, содержащий значение чисел и буквенно-цифровое значение.SQL Сортировка смешанных чисел и буквенно-цифровых значений
Но я получил неправильный вид (order by
) может ли кто-нибудь помочь мне в решении этой проблемы?
Я использую SQL Server 2008 R2, вот пример:
DECLARE @TableTester TABLE (TESTER VARCHAR(50));
INSERT @TableTester VALUES
('1'),
('2'),
('3'),
('4'),
('10'),
('20'),
('5 ; 6'),
('122'),
('256 ; 78'),
('U1 ; U2'),
('U3 ; 7'),
('C1'),
('U4'),
('WC23'),
('WC214 ; U4'),
('U10');
SELECT Tester FROM @TableTester
ORDER BY CASE WHEN PATINDEX('%[0-9]%', Tester) > 0 THEN 0 ELSE 1 END,
CASE WHEN PATINDEX('%[0-9]%', Tester) > 0
THEN LEFT(Tester, PATINDEX('%[0-9]%', Tester)-1) ELSE Tester END
ВЫВОД:
1
2
3
4
10
20
5 ; 6
122
256 ; 78
C1
U4
U10
U1 ; U2
U3 ; 7
WC23
WC214 ; U4
DESIRED РЕЗУЛЬТАТ:
1
2
3
4
5 ; 6
10
20
122
256 ; 78
C1
U1 ; U2
U3 ; 7
U4
U10
WC23
WC214 ; U4
Возможный дубликат [SQL Server 2008 - порядок по строкам с численным числом] (http://stackoverflow.com/questions/20240313/sql-server-2008-order-by-strings-with-number-numerically) – hatchet
Кроме того, если ответы на дублированный вопрос трудно выполнить, есть следующее: http://www.essentialsql.com/use-sql-server-to-sort-alphanumeric-values/ – hatchet
@hatchet, но у меня есть несколько значения в моей колонке, разделяющие точку с запятой ";" – itsMacyAnn