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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Выбрать только цифры из строки, средствами MySQL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Goshik
Отправлено: 02 Августа, 2009 - 20:46:35
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Собсно встала закая задача... Надо найти записи с уникальным тел. номером в таблице. Эт я подзапросами сделал. А вот штоб телефоные номера вида 8(ххх)-хх-хх и 8ххххххх считались равными - сделать не умею. Думаю надо оставить тока цифры и их уже сравнивать. Но как.... Может знает кто-нибудь решение для версии MySQL 5.0.45? Рег.выр. чёт не пашут. Буду очень благодарен за помощь Закатив глазки

(Отредактировано автором: 02 Августа, 2009 - 20:47:23)

 
 Top
Nestor
Отправлено: 03 Августа, 2009 - 00:16:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 220
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Попробуй сделать на пхп...вот так...

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)."'  "


-----
Aurus CMS
 
 Top
Goshik
Отправлено: 03 Августа, 2009 - 11:20:58
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Дак в том и дело что никак на пхп - надо только 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 рег.выр нету что-ль?
 
 Top
Goshik
Отправлено: 06 Августа, 2009 - 16:22:01
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Плиз, не баньте за даблпост Закатив глазки .
Просто тема ушла, а решенья так и нету.... Как же всё-таки выбрать цифры из строки?
 
 Top
AterCattus
Отправлено: 25 Августа, 2009 - 12:12:47
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2008  
Откуда: Санкт-Петербург


Помог: 0 раз(а)




нет в MySQL функции regexp_replace.

вот замена "в лоб" для конкретного случая:
CODE (text):
скопировать код в буфер обмена
  1. REPLACE( REPLACE( REPLACE( phone, '-', '' ), '(', '' ), ')', '' )
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB