Форум на Kuban.ru (http://forums.kuban.ru/)
-   Базы данных (http://forums.kuban.ru/f1041/)
-   -   Задачка на пару чашек чая ;) (MSSQL) (http://forums.kuban.ru/f1041/zadachka_na_paru_chashek_chaya_%3B_mssql-2878529.html)

dr1 28.07.2012 19:06

Задачка на пару чашек чая ;) (MSSQL)
 
Пусть в таблице "X" есть поле "Num" типа String с набором данных:
01
04
06
12
15

Тогда запросом вида:
SELECT Max(LPad(Num, 10, " ") FROM X;
Получим максимальный номер.

Теперь заменим данные столбца "Num" на следующие:
АбВгД__01_БлаБлаБла
АбВгД__04_БлаБлаБла
АбВгД__06_БлаБлаБла
АбВгД__12_БлаБлаБла
АбВгД__15_БлаБлаБла

т.е. нужные нам данные - это с 8-го по 9-й элемент строки.

Вопрос - как теперь выбрать максимальный элемент, иными словами - как сравнивать только с 8-го по 9-й символы строк?

crazy_ik 29.08.2012 16:36

select max(substring(num,8,2)) from x
Это если точно знаем, что число будет двузначным, и находится будет с 8-го символа

Если необходимо найти позицию символа - то CHARINDEX('<символ>', num) => select max(substring(num,charindex("_",num)+1,2))

Или ещё более универсально - используя регульники

x_05772 09.06.2014 19:16

Это не задачка. Это диагноз проектировщика такой базы.


Текущее время: 17:34. Часовой пояс GMT +3.