Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.213 c
3-34336
neXt
2003-04-21 17:54
2003.05.12
Ошибка в BDE


1-34395
Tapchyk
2003-04-29 01:29
2003.05.12
Реестр


7-34629
bers
2003-03-19 11:55
2003.05.12
имя пользователя


4-34641
NAlexey
2003-03-11 14:06
2003.05.12
BorderStyle


14-34593
Соловьев
2003-04-24 09:37
2003.05.12
МЮ-Реал