Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поиск на вхождения числа
 
 автор: maxfade   (13.01.2014 в 11:17)   письмо автору
 
 

Добрый день.

Необходимо произвести поиск по числу 1

Примеры строк из таблицы:

буль-р Рокоссовского, д.10
буль-р Рокоссовского, д.11
буль-р Рокоссовского, д.21 корпус 1
буль-р Рокоссовского, д.1
буль-р Рокоссовского, д.10 к.1
буль-р Рокоссовского 1
1 буль-р Рокоссовского 35
буль-р Рокоссовского 1 строение 1

Необходимо выбрать все строки в которых дом = 1:

буль-р Рокоссовского, д.1
буль-р Рокоссовского 1
буль-р Рокоссовского 1 строение 1

Как отсечь не нужные строки и не учитывать дома 11 или 21, корпусы и строения...?

Заранее спасибо.

  Ответить  
 
 автор: Sfinks   (14.01.2014 в 08:44)   письмо автору
 
   для: maxfade   (13.01.2014 в 11:17)
 

Строго говоря, sql не предназначен для большой работы со строками.
И по хорошему, такой задачи не должно стоять если правильно спроектирована БД.
Вот конкретно на таких данных, решить можно например так:
SELECT * 
FROM `strt`
WHERE rtrim(if(locate('корпус',street), 
               left(street,locate('корпус',street)-1), 
               if(locate('к.',street), 
                  left(street,locate('к.',street)-1), 
                  if(locate('строение',street), 
                     left(street,locate('строение',street)-1), 
                     street
                  )
               )
            )
      ) REGEXP '[^0-9]1$'
но:
1. Это крайне медленно, т.к. происходит полное сканирование таблицы и обработка всех строк.
2. Это крайне не надежно. С другим набором данных все может быть иначе.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования