| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > Как сравнить часть текста |
| Автор: MadCoder 27.5.2008, 17:18 |
| Здравствуйте! У меня есть две таблички, одна с индексами, другая с префиксами индексов (первые три цифры). Как мне выбрать для каждой записи из первой таблички строчку из второй таблицы. 1 таблица: Имя: | Индекс | ------------------------ Клиент 1 | 143312| Клиент 2 | 185441| 2 таблица: Индекс | Название ----------------------------- 140 Московская область 141 Московская область 142 Московская область 143 Московская область 185 Карелия ------------------------------ Должно получица: Клиент 1 | Московская область Клиент 2 | Карелия |
| Автор: skyboy 27.5.2008, 17:42 | ||
| индексы и их "префиксы" - строки или числа? вообще говоря, тебе надо использовать функцию проверки подстроки в строку. префиксы индексов имеют одинаковую длину?
|
| Автор: Nuzur 27.5.2008, 17:45 |
| Какая СУБД? Если MSQL - SUBSTRING Если Oracle - Substr Остальное не подскажу. |
| Автор: Akina 27.5.2008, 17:47 | ||
Вот что построил Аксесс:
|
| Автор: MadCoder 27.5.2008, 18:57 |
| Числа. В делфи это должно выглядеть так: If Copy(Text, 1,3)='123' then .... Т.е. строго первые три цифры должны совпадать со списком, где именно эти трехзначные числа собраны. |
| Автор: skyboy 27.5.2008, 20:36 |
а вот и фигу. copy в delphi - строковая функция вобщем, как и сказали товарищи, надо использовать зависящую от СУБД(почему не говоришь, какая УБД?! тайна, что ли?) функцию: substr, locate, left или адекватную. учитывая, что у тебя поля - числа(зачем, кстати?), тебе сначала может понадобиться приводить значения полей к типу char/varchar через convert/cast или какой-то toStr(в зависимости от СУБД). |
| Автор: Deniz 28.5.2008, 05:47 | ||||
Подойдет для многих СУБД
|
| Автор: MadCoder 29.5.2008, 11:18 |
| Спасибо, Всем, особенно Deniz, все замечательно работает. Обернул в функцию и получился следующий код: И спасибо за ссылку на "Тренировка на www.sql-ex.ru" в подписи - давно искал, никак не мог отыскать |