выборка с помошью регулярных выражений

deRamzes

Новичок
выборка с помошью регулярных выражений

Привет Алл
тут вопрос возможно ли это!

занчит имееться некая таблица в кторой в определенном поле
сушествует запись типа "233 342.345 5545"
и в таком жепри мерно духе отстьальные

что небходимо сделать

выбрать ее но с условием что это число мне приходит в виде
"2333423455545"

т е необходимо во время запроса регекспить поле в базе т е убирать пробелы точки и тире и сравнивать с тем число что пришло для поиска



такое реально сделать в запросе? чтоб не делать, выбрать все а потом сравнивать программно.
 

Demiurg

Guest
зачем регулярные выражения ? заменяй точки и пробелы на нечто. или сравнивай сразу с нужной формой.
 

deRamzes

Новичок
Автор оригинала: Demiurg
зачем регулярные выражения ? заменяй точки и пробелы на нечто. или сравнивай сразу с нужной формой.
в базе заменять нельза вот как есть с пробелами и точками так и должно остаться

или я чтото недопонял :(

при поиске их надо опустить и вывести соответвенно на экран с пробелами и точкаи

пока выход вижу
разве что сделать рядом поле с этими же значениями но без этих точек пробелов ит п

но нехотелося бы увеличвать обьем таблицы
 

Demiurg

Guest
в базе ничего менять не надо.
select field from table where str_replace('.' , '' , field) = 'нужное значение'

синтаксис постгреса не знаю. но примерно так
 

Georgy

Guest
2 si:
это уже не первый ваш грубый выпад и не по теме.

хм ... вопрос был задан, я на него ответил. А по поводу "рук и их использования по делу" - наверное очень сложно набрать адрес mysql.com и посмотреть в документации, есть ли такая фича, как регулярные выражения и поддериживается ли она.

P.S.

могу попенять:

Ромик (который Шэф) более изискано ругается и высказывается, но! так как он TeaM, его, видимо, трогать низя:) Ну в общем все опять возвращается к стайным вопросам: "кто сильнее или власть имеет, тот и прав"...
 

Demiurg

Guest
Georgy, ты думаешь ссылка на документацию по mysql в вопросе по постресу - это ответ ?
si прав, ты далеко не первый раз отвечаешь не по теме. Еще немного и попадешь в ReadOnly Team
 

Georgy

Guest
2 Demiurg: сори! хм, я просто не видел названия форума. Блин, надо ж так лохонуца:((

а по поводу "не по теме" и рид онли - честно говоря я плакать не буду - дело ваше (админское).
 

Demiurg

Guest
> честно говоря я плакать не буду.
мы тоже
 

deRamzes

Новичок
Автор оригинала: Demiurg
в базе ничего менять не надо.
select field from table where str_replace('.' , '' , field) = 'нужное значение'
Просто интересует что будет быстрее отрабатывать
на 800 тыс записях?
replace - или регулярное выражение?
----
вот что получаеться если ипользовать реплайс

select "Nr" from t_200 where replace(replace(replace("Nr",'.',''),' ',''),'-','')='1F4002608001';

Считано записей: 1 (85,86 sec)
что-то долговатенько-(
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: deRamzes
Просто интересует что будет быстрее отрабатывать
на 800 тыс записях?
replace - или регулярное выражение?
Одинаково: и там, и там без seq_scan не обойдёца.

select "Nr" from t_200 where replace(replace(replace("Nr",'.',''),' ',''),'-','')='1F4002608001';

Считано записей: 1 (85,86 sec)
что-то долговатенько-(
Побробуй функциональный индекс построить по replace(replace(replace("Nr",'.',''),' ',''),'-','') (возможно придёца это как функцию отдельную оформить).
 

Profic

just Profic (PHP5 BetaTeam)
deRamzes:
а ты сделай функциональный индекс, точно синтаксиса не знаю, но что-то типа
index sfield (str_replace('.' , '' , field))
видел в описании того, как сделать регистронезависимый поиск в строках... (вот только точно не помню где... когда читаю доки - мне по барабану, на каком они написаны (русском или английском) я запоминаю суть... :))
 

deRamzes

Новичок
Ура!
функциональный индекс помог

правдо пришлося чрез функцию отдельную это оформить
которая используеться в индесировании
но запрос уменьшился до 0.16с
Всем спасибо!

Mysql наверное такое бы не потянул

а может я и ошибаюся.
 

Profic

just Profic (PHP5 BetaTeam)
MySQL такое извращентсво потянул, бы, но за те самые 85,86 sec (утрирую).

Блин, я все больше склоняюсь к переходу на сложных проектах на PostgreSQL... А то на сложных запросах (как в данном случае) мускль безбожно тормозит, хоть как заоптимизируйся...
 
Сверху