Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Другие СУБД > Вхождение строк


Автор: Zhenyusya 14.9.2011, 12:17
Коллеги, помогите, пожалуйста!
У меня СУБД IBM DB2.
Есть таблица msk.dossier.
В ней есть поле name.
Необходимо получить все записи, у которых поле name содержится в какой-то постоянной строке, например, 'ИВАНОВА ИВАННА ИВАНОВНА'.
Пытаюсь делать следующим образом, но ничего не получается.
Код

select * from msk.dossier where posstr('ИВАНОВА ИВАННА ИВАНОВНА', name) > 0;


Автор: Zhenyusya 14.9.2011, 13:45
Вопрос снимаю, нашла функцию LOCATE.  smile 

Автор: Данкинг 14.9.2011, 14:13
А как LOCATE связан с SELECT в данном случае? Наверняка же есть что-нибудь вроде %% для частичного поиска.

Автор: dvska 14.9.2011, 19:15
Код

 where name like '%ИВАНОВА ИВАННА ИВАНОВНА%'

Автор: Zhenyusya 15.9.2011, 05:15
Это не проходит
Цитата

Код

where name like '%ИВАНОВА ИВАННА ИВАНОВНА%'


т.к. в name строки типа 'ИВАННА'
А LOCATE - практически тоже самое, что и POSSTR, только может в качестве переменной искомой подстроки воспринимать имя атрибута таблицы
Код

select * from msk.dossier where locate(name, 'ИВАНОВА ИВАННА ИВАНОВНА')>0;

т.о. я выберу все записи, у которых name содержится в 'ИВАНОВА ИВАННА ИВАНОВНА'

Автор: Данкинг 15.9.2011, 10:07
"locate" - это даже оператор СУБД, что ли? Я думал, функция Дельфи обычная.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)