![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL запрос
Evgeny © (2003-04-22 12:32:00)Посылается запрос вида:
select * from "base.dbf" where number="93101-23070-00"
но в таблице этот номер может быть записан в любом варианте:
9310123070 00
93101 2307000
93101-23070 00
931012307000
без прочерков, через пробелы (через любое количество) и вообще как угодно. Каким образом все-таки можно сделать выборку? Какие есть варианты?
Evgeny (2003-04-22 13:25:00) [1]Пересмотрел таблицы, там бред сивой кобылы.
Соловьев (2003-04-22 13:15:00) [2]я когда-то занимался разбором такого беспридела. Решил проблему где-то на 60-70% Всегда находилась Маня, которая то английские буквы вместо русских введет, то 31 февраля, то еще что-то...
Можно конечно попробовать отказаться от SQL и поработать с записями по очереди. Там и алгоритм соответсвуюющий можно выдумать. ИМХО, можно так:
1. сначала берем 5 цыфр. удаляем из анализируемой строки.
2. проверяем первый символ, если не цыфра, то удаляем. Если цыфра, то берем 5 цыфр. удаляем из анализируемой строки.
3. пункт 2.
Это конечно если кол-во цыфр фиксировано, если нет, но можно и там что-то выдумать...
Anatoly Podgoretsky (2003-04-22 13:06:00) [3]если количесто цифр в группах фиксировано (XXXXX-YYYYY-ZZ), то всегда можно форматировать на этапе занесения данных в базу или потом. Если делать ночью то не так страшно
Evgeny (2003-04-22 13:05:00) [4]Всем спасибо.
Соловьев (2003-04-22 13:03:00) [5]
> Переделывать каждую неделю надоест слишком быстро, если
> только это все дело не автоматизировать
наверное такой
> 9310123070 00
> 93101 2307000
> 93101-23070 00
> 931012307000
беспредел автоматизировать не удастся... Но може ты что-то и придумаешь...
Evgeny (2003-04-22 13:00:00) [6]Бороться невозможно, таблицы поставляются готовые и обновляются очень часто. Переделывать каждую неделю надоест слишком быстро, если только это все дело не автоматизировать. Может это окажется самым приемлемым вариантом.
Соловьев (2003-04-22 12:58:00) [7]
> но таблицы переделывать нельзя.
и не надо, создай новую(с новой структурой) и в нее единожды перенеси правильно данные.
Johnmen (2003-04-22 12:57:00) [8]>stone © (22.04.03 12:44)
Не думаю, что количество цифр в группах переменно.
И, конечно, надо пересмотреть подход...
Evgeny (2003-04-22 12:56:00) [9]Получается если делать так:
select * from "base.dbf" where number like "9%3%1%0%1%2%3%0%7%0%0%0"
конечно бред, но таблицы переделывать нельзя.
Соловьев (2003-04-22 12:49:00) [10]просто надо было правильно споректировать БД. Я так понимаю этот номер - "93101-23070-00", формируется из каких-то 3-х? Тогда просто надо было создать 3 поля, а сам номер выичслять... И все тогда исчется очень даже не плохо...
Anatoly Podgoretsky (2003-04-22 12:49:00) [11]В чем причина подобного беспорядка, может с ней бороться, а не с последствиями?
stone (2003-04-22 12:44:00) [12]
> Johnmen © (22.04.03 12:41)
> like "93101%23070%00"
Этом случае результом окажуться также такие как этот
"93101 923070 200"
stone (2003-04-22 12:42:00) [13]Боюсь, что средствами Local SQL никак.
Правильнее исключить подобное разнообразие хранения информации в базе и пользоваться простым запросом
select * from "base.dbf" where number=:Param
Johnmen (2003-04-22 12:41:00) [14]like "93101%23070%00"