2014-12-04 4 views
1

Мне нужно сделать запрос к таблице в моей базе данных. До сих пор я использовал FIND_IN_SET, потому что у меня есть строки вроде этого: «twitter, bycicle, car».FIND_IN_SET для части строки в Mysql

Тогда я мог искать по FIND_IN_SET("twitter", nameOfColumn)

Но теперь, мне нужно искать только часть каждого «установить», например: «твиттер> 10, ружья, автомобиль»

Это еще отлично работает на велосипеде и машине, но если мне нужно искать твиттер, я не могу его найти. Каков правильный способ сделать это?

+0

Если у вас есть другая символьная (не запятая) внутренняя строка, поэтому 'FIND_IN_SET()' не работает, вместо этого вы можете использовать ее из 'substring_index'. –

+0

Можете ли вы показать мне пример? – Biribu

+0

Эта [ссылка] (http://stackoverflow.com/questions/26748845/mysql-split-string/26750049#26750049) - та же самая проблема, о которой я отвечал в прошлом, может помочь u. –

ответ

1

Следующий запрос даст вам то, что вы хотите, однако использовать его с осторожностью в отношении данных, которые вы:

SELECT * 
FROM table1 
WHERE col1 RLIKE 'twitter' 

Рабочей скрипки: http://sqlfiddle.com/#!2/66f538/1

+0

Я не хотел использовать LIKE из-за этого, возможно, есть некоторые подобные строки, и это путает. Если у меня нет другого пути, я буду использовать его – Biribu

+0

@Biribu, чтобы немного улучшить его, вы также можете попробовать следующее: 'RLIKE 'twitter. *,?'' –

+0

У меня проблемы со словами короче, чем содержащиеся в db. Если я попробую «twit», я получаю взамен строку ... – Biribu

0

Использовать обычные LIKE оператора:

SELECT * 
FROM table1 
WHERE nameOfColumn LIKE '%twitter%'; 
Смежные вопросы