Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / выборка по наличии в стринге / 12 сообщений из 12, страница 1 из 1
28.06.2008, 16:37
    #35400311
Evilsun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка по наличии в стринге
День добрый - я видать туплю , но подскажите как сделать селект по вхождению в строку

например

select * from goods where category ????? 'harddrive , memory , monitor'

и что бы все harddrive , памяти и мониторы попали в resultSet ...
...
Рейтинг: 0 / 0
28.06.2008, 16:45
    #35400315
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка по наличии в стринге
Если в поле category лежит только это слово (а, не например, "seagate harddrive"), то
Код: plaintext
select * from goods where category in ('harddrive' , 'memory' , 'monitor')
если же в category какая-то фраза, среди которой нужно найти слово, то пишите регулярное выражение.
...
Рейтинг: 0 / 0
28.06.2008, 17:11
    #35400328
Evilsun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка по наличии в стринге
Спасибо - думал что есть какая то дефолтовая команда типа like - но раз нет - будем парсить на стороне кода вхождения в in
...
Рейтинг: 0 / 0
28.06.2008, 17:23
    #35400334
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка по наличии в стринге
EvilsunСпасибо - думал что есть какая то дефолтовая команда типа like - но раз нет - будем парсить на стороне кода вхождения в inНе, ну есть like. Если у вас список идет единой строкой, извратитесь через лайк. Я ж не знал, что список вы не сами формируете.
...
Рейтинг: 0 / 0
28.06.2008, 17:28
    #35400336
Evilsun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка по наличии в стринге
не совсем понял как можно через like извратиться - если я буду постгресу целую строку давать - то он ничего не найдет ....
...
Рейтинг: 0 / 0
28.06.2008, 17:37
    #35400338
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка по наличии в стринге
Evilsunне совсем понял как можно через like извратиться - если я буду постгресу целую строку давать - то он ничего не найдет ....
Предположим, что ваша строка имеет вид
',harddrive,memory,monitor,'
именно так - начинаясь и кончаясь запятыми.
Тогда поиск можно осуществить так

Код: plaintext
select * from goods where ',harddrive,memory,monitor,' like '%,'||category||',%'

Или используя функцию поиска позиции
Код: plaintext
select * from goods where position(','||category||',', ',harddrive,memory,monitor,')> 0 
...
Рейтинг: 0 / 0
28.06.2008, 17:39
    #35400340
Evilsun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка по наличии в стринге
Большое спасибо ! Век живи - век учись ))
...
Рейтинг: 0 / 0
28.06.2008, 17:41
    #35400341
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка по наличии в стринге
EvilsunБольшое спасибо ! Век живи - век учись ))Но при таком варианте, индексы использоваться не будут. Так что лучше уж делать с in. Если есть возможность, таблица не маленькая и есть индексы на поле category.
...
Рейтинг: 0 / 0
28.06.2008, 17:43
    #35400343
Evilsun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка по наличии в стринге
скорее всего через in и буду делать ... надо лиш куки распарсить который мной же и ставится .и явой сделать сплит ...
...
Рейтинг: 0 / 0
30.06.2008, 12:26
    #35401779
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка по наличии в стринге
Evilsunскорее всего через in и буду делать ... надо лиш куки распарсить который мной же и ставится .и явой сделать сплит ...

Код: plaintext
1.
2.
3.
select * from goods where 
category like '%harddrive%' or
category like '%memory%' or
category lke '%monitor%'


Но тоже индексы не будут использоваться....разве что убрать левый %
...
Рейтинг: 0 / 0
30.06.2008, 12:33
    #35401795
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка по наличии в стринге
Winnipuh Evilsunскорее всего через in и буду делать ... надо лиш куки распарсить который мной же и ставится .и явой сделать сплит ...

Код: plaintext
1.
2.
3.
select * from goods where 
category like '%harddrive%' or
category like '%memory%' or
category lke '%monitor%'


Но тоже индексы не будут использоваться....разве что убрать левый %Если уж он распарсил, то зачем использовать like?
...
Рейтинг: 0 / 0
30.06.2008, 13:18
    #35401882
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка по наличии в стринге
pamir Winnipuh Evilsunскорее всего через in и буду делать ... надо лиш куки распарсить который мной же и ставится .и явой сделать сплит ...

Код: plaintext
1.
2.
3.
select * from goods where 
category like '%harddrive%' or
category like '%memory%' or
category lke '%monitor%'


Но тоже индексы не будут использоваться....разве что убрать левый %Если уж он распарсил, то зачем использовать like?

да, смотря ж до какой степени распарсил....
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / выборка по наличии в стринге / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]