Мы хотим найти запись в таблице на основе строки поиска. Этот поиск является частью хранимой процедуры.
Вот что нам нужно: 1. В таблице ppl есть имя столбца, которое содержит данные в формате имени, фамилии. Скажем, записи: barack, oba bar, obama и barack, obama.
- Мы хотим выбрать запись на основе строки поиска. Строка поиска может быть именем ИЛИ фамилией.
Нам нужен точный поиск на основе строки поиска. Означает, что строка поиска является баром; он не должен возвращать запись barack,obama и должен возвращать только bar,obama. Аналогичный точный поиск по части фамилии.
Мы не знаем, будет ли в строке поиска имя или фамилия. Таким образом, строка поиска может быть даже «oba»... и она должна возвращать только запись «barack,oba».
Следующие подходы мы пробовали до сих пор; но ни один из них не работал:
- выберите имя из ppl, где имя типа «бар,%» или имя типа «%, бар»; Это работает для части имени, но не работает для части фамилии.
выберите имя из ppl, где имя типа «oba,%» или имя типа «%, oba»; не дает должных результатов.
выберите имя из ppl, где name = ANY('%,oba',oba,%'); - не работает
выберите имя из ppl, где regexp_like (имя,'^,oba$') ИЛИ regexp_like (имя,'oba$,^'); - не работает
Прошу вас поделиться своими мыслями в этом случае.
name like 'bar,%' or name like '%,bar'
не работает. Это для меня. Конечно, у вас нет никого с фамилией "бар"... - person Tony Andrews   schedule 08.09.2011