вырезать часть поля БД для SQL-запроса

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Osteon
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 17.01.2013 (Чт) 5:53

вырезать часть поля БД для SQL-запроса

Сообщение Osteon » 17.01.2013 (Чт) 5:58

Здравствуйте.
Пишу на VB6, операционка - WinXP SP3, БД - MS Access 2007.
Имеется нумерация человеков, занесенная в поле одной БД. Нумерация уникальная, что-то типа ПИН. :) Номер состоит из порядкового номера человека, через слэш - год регистрации. Такого вида "0001/12, 0002/12, 0001/13, 0002/13", и т.п. В каждом году нумерация начинается с "0001", и далее с приращением "1". Бьюсь над созданием SQL-запроса на "фильтрацию" по году, типа байсиковского var = Right(номер, 2), чтобы в гриде выводил только 12-й, или только 13-й год, и т.п. Просветите, пожалуйста... :)

Osteon
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 17.01.2013 (Чт) 5:53

Re: вырезать часть поля БД для SQL-запроса

Сообщение Osteon » 17.01.2013 (Чт) 6:37

Извините, я тему наоборот создал :oops: Не "часть поля БД для SQL", а "создать SQL для части поля БД"

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: вырезать часть поля БД для SQL-запроса

Сообщение HandKot » 17.01.2013 (Чт) 7:09

Osteon писал(а): Бьюсь над созданием SQL-запроса на "фильтрацию" по году, типа байсиковского var = Right(номер, 2), чтобы в гриде выводил только 12-й, или только 13-й год, и т.п. Просветите, пожалуйста... :)


так и используйте, если год всегда 2 символа
Код: Выделить всё
SELECT  Right(номер, 2) AS Выражение1FROM MyTable;


если нет, то
Код: Выделить всё
SELECT Mid$(номер,InStr(1,номер,"/")+1,255) AS Выражение1FROM MyTable;


если же номера всегда 4 знака, то еще проще
Код: Выделить всё
SELECT Mid$(номер,6,255) AS Выражение1FROM MyTable;


если же нужна фильтрация, то
Код: Выделить всё
SELECT  * FROM MyTable WHERE Right(номер, 2) = '13';

и по аналогии для других вариантов
I Have Nine Lives You Have One Only
THINK!

Osteon
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 17.01.2013 (Чт) 5:53

Re: вырезать часть поля БД для SQL-запроса

Сообщение Osteon » 17.01.2013 (Чт) 8:06

Спасибо!!! Все работает, как по маслу. Я не знал, что функции можно вставлять в SQL-запрос... :oops:
ЗЫ Я совсем не знаю SQL... :cry:

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: вырезать часть поля БД для SQL-запроса

Сообщение HandKot » 18.01.2013 (Пт) 7:02

Osteon писал(а):ЗЫ Я совсем не знаю SQL... :cry:


для изучения в Акцес, при создании запроса, Вы можете вызвать редактор выражений. С его помощью создавать выражения, а потом и посмотреть, как это в T-SQL будет выглядеть (достаточно полезная штука на начальном этапе)
I Have Nine Lives You Have One Only
THINK!

Osteon
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 17.01.2013 (Чт) 5:53

Re: вырезать часть поля БД для SQL-запроса

Сообщение Osteon » 18.01.2013 (Пт) 8:50

HandKot писал(а):для изучения в Акцес, при создании запроса, Вы можете вызвать редактор выражений. С его помощью создавать выражения, а потом и посмотреть, как это в T-SQL будет выглядеть (достаточно полезная штука на начальном этапе)


ОК, спасибо! :)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14173
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: вырезать часть поля БД для SQL-запроса

Сообщение alibek » 25.01.2013 (Пт) 10:36

Рекомендую год сохранять в отдельном поле. Если это столь важная часть системы, то отдельное индексированное поле с годом значительно ускорит выполнение запросов и упростит работу с данными.
Lasciate ogni speranza, voi ch'entrate.

Osteon
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 17.01.2013 (Чт) 5:53

Re: вырезать часть поля БД для SQL-запроса

Сообщение Osteon » 04.02.2013 (Пн) 11:24

Спасибо! :D


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList