Справка по алгоритму поиска строки mysql - PullRequest
2 голосов
/ 30 августа 2010

У меня есть таблица строк в моей таблице mysql / php.

 id | str  

 3  |  2,4,5,6
 4  |  7,8,9,14
 5  |  3,1,16

, если я выполняю поиск по ключевому слову LIKE , например, "1", результат ниже и он неверен

 id | str  

 4  |  7,8,9,14
 5  |  3,1,16

Но ожидаемый результат -

 id | str  
 5  |  3,1,16

, поскольку "1" находится только в приведенном выше ряду, но, к сожалению, не знаю,

, помогите мне с этим,

Nithish.

Ответы [ 3 ]

4 голосов
/ 30 августа 2010

то, что вы ищете, это FIND_IN_SET функция

  select find_in_set('1', '3,2,1');  => 3
  select find_in_set('1', '3,2,14'); => 0

еще лучше, рассмотрите нормализацию вашей базы данных

1 голос
/ 30 августа 2010

Вы должны использовать REGEXP вместо LIKE
выберите * из mytable WHERE str REGEXP '(^ |,) 1 (, | $)'
^ означает «начало строки», а $ - «конец строки»
см. http://dev.mysql.com/doc/refman/5.1/en/regexp.html для получения более подробной информации

1 голос
/ 30 августа 2010

используйте REGEXP вместо LIKE http://dev.mysql.com/doc/refman/5.1/en/regexp.html

str REGEXP '1 [, $]'

...