# запрос mysql like in()

**URL:** <https://linux.ru/forum/t/mysql-like-in/9670>\
**Category:** Программирование общее\
**Created:** [10.Сентябрь.2011 01:56:31 UTC](https://linux.ru/forum/t/mysql-like-in/9670 "2011-09-10T01:56:31Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![general](https://linux.ru/forum/letter_avatar_proxy/v4/letter/g/a4c791/32.png) [@general](https://linux.ru/forum/u/general)\
**Post date:** [10.Сентябрь.2011 01:56:31 UTC](https://linux.ru/forum/t/mysql-like-in/9670/1 "2011-09-10T01:56:31Z")

</div>

Доброго времени суток,

встала необходимость построить запрос где будет много like:

```
...colm like 'str1%' or colm like 'str2%' or colm 'str3%' or colm like 'str4%'...

```

и так от 1 до 500 раз в зависимости от установок пользователя. При дублировании "or colm like " занимает довольно много места и возрастает количество инфы посылаемой на удаленный mysql сервер. Есть ли вариант сократить запроск примеру к синтаксису похожему на in(‘str1%’,‘str2%’…)?

Пробовал REGEXP - но он очень медленный:

```
select * from tbl where colm REGEXP '^str1|^str2' order by rand() limit 20;.......20 rows in set (28.51 sec)select * from tbl where colm like "str1%" or colm like "str2%" order by rand() limit 20;.......20 rows in set (2.90 sec)

```
