Главная страница
    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-34596
djon007
2003-04-09 20:17
2003.05.12
Загрузить сайт?


3-34349
I.Ru.Ru
2003-04-22 08:35
2003.05.12
Какой формат СУБД лучше?Paradox?


14-34586
Тих
2003-04-23 19:40
2003.05.12
Склонение имен-фамилий-отчеств в разных падежах


3-34367
kingdom2000
2003-04-19 19:14
2003.05.12
DBCtrlGrid и Image


1-34483
Sir Alex
2003-04-29 17:02
2003.05.12
Помогите с FileRead --->





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский