Форум на Kuban.ru (http://forums.kuban.ru/)
-   Базы данных (http://forums.kuban.ru/f1041/)
-   -   Вопрос по SQL (http://forums.kuban.ru/f1041/vopros_po_sql-2879575.html)

dr1 29.07.2012 12:06

Вопрос по SQL
 
Пусть в таблице "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-й символы строк?

tcode 29.07.2012 12:30

ну так что нибудь типа substring
есть в firebird и mssql думаю что и в других бд есть нечто подобное

Другое дело что подход как то не очень это да. Imho лучше завести отдельное поле куда при добавлении и обновлении записи записывать этот номер, что бы не заниматься разбором строк, да и потом если позиция в строке будет меняться то тоже надо будет что то мутить, или полный анализ строки или где то хранить позицию. Ну в в том же FireBird можно для этого накатать udf.

dr1 29.07.2012 20:01

2 tcode: Да в том то и косяк - что структуру базы менять нельзя. Сделаю сабстирнг, спасибо.


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