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