Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-34561
Style
2003-04-23 18:39
2003.05.12
Delphi Challenge! Пришло письмо с просьбой перенести 1-й тур


1-34493
GEN
2003-04-29 09:32
2003.05.12
компонент TRichEdit


1-34408
zloy_dima
2003-04-30 11:53
2003.05.12
Динамический массив


14-34578
Ixion
2003-04-23 00:34
2003.05.12
Посоветуйте ЖК монитор


1-34486
Pasha
2003-04-29 15:36
2003.05.12
Как програмно создать документ Word a ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский