Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сортировка varchar+int  [new]
Fur
Guest
Сортируется так:А нужно:
тест1тест1
тест10тест2
тест100тест3
тест2тест4
тест200...
тест3тест10
тест4тест11
......

Не могу сформулировать задачу поисковику, находится абсолютно неподходящее...
16 апр 14, 12:03    [15889829]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка varchar+int  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
ORDER BY CAST(STUFF(Field,1,ISNULL(NULLIF(PATINDEX('%[0-9]%',Field),0)-1,0),'')AS INT)
?
16 апр 14, 12:08    [15889868]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка varchar+int  [new]
aleks2
Guest
Fur
Сортируется так:А нужно:
тест1тест1
тест10тест2
тест100тест3
тест2тест4
тест200...
тест3тест10
тест4тест11
......

Не могу сформулировать задачу поисковику, находится абсолютно неподходящее...


А нафига хранить абсолютно бессодержательное слово "тест"?
16 апр 14, 12:10    [15889891]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка varchar+int  [new]
Fur
Guest
ам... С половиной этих штук не работал.
Conversion failed when converting the varchar value 'тест тест' to data type int.
16 апр 14, 12:11    [15889894]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка varchar+int  [new]
Fur
Guest
Это же просто как пример ситуации. =\
16 апр 14, 12:12    [15889899]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка varchar+int  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Fur
ам... С половиной этих штук не работал.
Conversion failed when converting the varchar value 'тест тест' to data type int.
И это всё, что Вы можете нам сообщить?
16 апр 14, 12:13    [15889907]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка varchar+int  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
А так?
ORDER BY CAST(STUFF(Field,1,NULLIF(PATINDEX('%[0-9]%',Field),0)-1,'')AS INT)
16 апр 14, 12:17    [15889945]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка varchar+int  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Отрежьте слева 4 символа и сортируйте как по целым числам.
16 апр 14, 13:52    [15890585]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка varchar+int  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Владислав Колосов
Отрежьте слева 4 символа и сортируйте как по целым числам.
Если от 'тест тест' отрезать четыре первых символа,
целое число не получится.
16 апр 14, 13:54    [15890600]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка varchar+int  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Не вижу 'test test' в условии задачи.
16 апр 14, 13:58    [15890628]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка varchar+int  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Владислав Колосов
Не вижу 'test test' в условии задачи.
15889894
16 апр 14, 14:05    [15890668]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка varchar+int  [new]
Avangard1987
Member

Откуда:
Сообщений: 15
Если я правильно понял, то каждая строка исходных данных состоит из строки и числа: Строка данных = Строка + Число.
Как написано выше, с помощью функции PatIndex( '%[0-9]%', StrData ) находим первый цифровой символ.
Дальше пусть: i = PatIndex( '%[0-9]%', StrData ).
Дальше с помощью функции Stuff( StrData, 1, i-1, '' ) заменяем подстроку до первого цифрового символа на пустую строку.
Дальше остается перевести из строкового типа в числовой.
16 апр 14, 15:20    [15891266]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка varchar+int  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Avangard1987
Если я правильно понял, то каждая строка исходных данных состоит из строки и числа: Строка данных = Строка + Число.
Как написано выше, с помощью функции PatIndex( '%[0-9]%', StrData ) находим первый цифровой символ.
Дальше пусть: i = PatIndex( '%[0-9]%', StrData ).
Дальше с помощью функции Stuff( StrData, 1, i-1, '' ) заменяем подстроку до первого цифрового символа на пустую строку.
Дальше остается перевести из строкового типа в числовой.
Вот только цифр может и вообще не быть.
Как нам было продемонстрировано.

А возможный формат строки вообще никак не описан.
Ох уж эти сочинители вопросов!
16 апр 14, 15:24    [15891298]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить