2013-08-28 13 views
0

В моей таблице у меня есть feild user_ids. в user_ids feilds containeing значения как 12,45,78,95,21,78,98как искать идентификатор из группы id с помощью mysql?

то, что мне нужно, я нужен MySQL запрос, поиск для определенного идентификатора (напр: 45) в Фельд.

Я использовал как оператор, но не работал, как и ожидалось. например: когда я ищу его возвращение tru, но id 5 нет в списке.

Я хотел бы знать, есть ли функция по умолчанию доступна в mysql.

могли бы вы пожалуйста, помогите мне ...

мой запрос.

SELECT * FROM `FRIENDSLIST` WHERE `USERS_ID` LIKE '%'.$ID.'%'; 

NB: Я не знаю, соответствует ли этот вопрос стандарту, pls не дают права голоса. Просьба помочь мне ....

+1

Пожалуйста, включите в свой вопрос запрос вы пробовали. – Eggplant

+0

Вы не должны хранить все 'user_ids' в одном поле, но создайте другую таблицу, в которой содержатся поля' user_id' и 'mytable_id'. – Arthur

+0

@Athur. на самом деле вы пишете. но я не в ситуации, чтобы сделать это, как im, работая с определенной таблицей alredy. если я иду на эту опцию, мне нужно изменить все почти все сценарии, и у меня нет разрешения на это ... :( – Ricky

ответ

3

Это также работает:

select * from FRIENDSLIST where find_in_set($ID, USERS_ID) <> 0 
+1

Большое спасибо @rgin. Я получил то, что искал. Я здесь не об этой функции до :). – Ricky

1

Попробуйте

Where ',' + MyField + ',' Like '%,' + MySearchString + ',%' 

Проблема заключается в том, что вы думаете о нем, как идентификаторы, но это просто строка. Поэтому, когда вы ищете «5» в 12, 45,78,95,21,78,98, он находит это в 5 из 45. Если вы окружаете запятыми, то он ищет «, 45» в ' , 12,45,78,95,21,78,98, 'и находит его, но вы ищете', 5 ', он не будет соответствовать, как вам нужно.

Вам также необходимо добавить запятые в начале и конце, чтобы иметь возможность вычислять первый и последний идентификаторы.

+0

Что происходит, когда вы ищете 98? – rgin

+0

98 тоже должен работать, потому что в заявлении добавляются запятые и ведущие запятые к строке, в которой вы выполняете поиск, поэтому поиск становится Where ', 12,45,78,95,21,78,98,' like ', 98,' и он соответствует. Извините за все изменения. Sleepy! – asantaballa

+0

И жаль снова, означало Where ', 12,45,78,95,21,78,98,' like '%, 98,%' – asantaballa

0

В соответствии с вашими данными более простым способом является поиск с запятой как «45».

Но лучший способ - разбить их на основе запятой и сопоставить с ним.

Смежные вопросы