|
|
|
| Добрый день.
Необходимо произвести поиск по числу 1
Примеры строк из таблицы:
буль-р Рокоссовского, д.10
буль-р Рокоссовского, д.11
буль-р Рокоссовского, д.21 корпус 1
буль-р Рокоссовского, д.1
буль-р Рокоссовского, д.10 к.1
буль-р Рокоссовского 1
1 буль-р Рокоссовского 35
буль-р Рокоссовского 1 строение 1
Необходимо выбрать все строки в которых дом = 1:
буль-р Рокоссовского, д.1
буль-р Рокоссовского 1
буль-р Рокоссовского 1 строение 1
Как отсечь не нужные строки и не учитывать дома 11 или 21, корпусы и строения...?
Заранее спасибо. | |
|
|
|
|
|
|
|
для: 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. Это крайне не надежно. С другим набором данных все может быть иначе. | |
|
|
|