Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Выбрать только цифры из строки, средствами MySQL
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Выбрать только цифры из строки, средствами MySQL

Страниц (1): [1]
 

1. Goshik - 02 Августа, 2009 - 20:46:35 - перейти к сообщению
Собсно встала закая задача... Надо найти записи с уникальным тел. номером в таблице. Эт я подзапросами сделал. А вот штоб телефоные номера вида 8(ххх)-хх-хх и 8ххххххх считались равными - сделать не умею. Думаю надо оставить тока цифры и их уже сравнивать. Но как.... Может знает кто-нибудь решение для версии MySQL 5.0.45? Рег.выр. чёт не пашут. Буду очень благодарен за помощь Закатив глазки
2. Nestor - 03 Августа, 2009 - 00:16:10 - перейти к сообщению
Попробуй сделать на пхп...вот так...

PHP:
скопировать код в буфер обмена
  1. $tel = '8-(800) 300 0 500';
  2.  
  3. function clearphone($p){
  4.         $s_a = array("-",'(',')',' ');
  5.         return str_replace($s_a,'',$p);
  6. }
  7.  


CODE (text):
скопировать код в буфер обмена
  1. "SELECT * FROM `somebase` WHERE phone='{$tel}' OR phone='".clearphone($tel)."'  "
3. Goshik - 03 Августа, 2009 - 11:20:58 - перейти к сообщению
Дак в том и дело что никак на пхп - надо только MySQL юзать. Просто $tel мне тоже заранее неизвестен. Влт запрос:

CODE (text):
скопировать код в буфер обмена
  1. SELECT table.*, table.phone as ph  FROM table WHERE (SELECT COUNT(*) FROM table WHERE [b]phone[/b] = [b]ph[/b]) = 1


Вот из ph и phone какраз и нужно цифры вытащить. С ПхП тут придётся кучу доп. запросов делать, а это - гемор.

З.Ы. Нашёл на каком-то форуме:

Цитата:
По-моему, тему пора в FAQ. Решение для 10-ки
CODE (text):
скопировать код в буфер обмена
  1. SELECT regexp_replace('32#56*32+00abc;', '[^[:digit:]]') FROM dual


Чё за десятка? У мну не пашет Растерялся
В 5.0.45 рег.выр нету что-ль?
4. Goshik - 06 Августа, 2009 - 16:22:01 - перейти к сообщению
Плиз, не баньте за даблпост Закатив глазки .
Просто тема ушла, а решенья так и нету.... Как же всё-таки выбрать цифры из строки?
5. AterCattus - 25 Августа, 2009 - 12:12:47 - перейти к сообщению
нет в MySQL функции regexp_replace.

вот замена "в лоб" для конкретного случая:
CODE (text):
скопировать код в буфер обмена
  1. REPLACE( REPLACE( REPLACE( phone, '-', '' ), '(', '' ), ')', '' )

 

Powered by ExBB FM 1.0 RC1