2014-12-30 3 views
0

Я работаю над базой данных, которая была сделана ужасно. Мне нужно найти идентификатор в колонке с запятой.SQL LIKE REGEXP Соответствие одиночному значению и строке Comma'd

Значения столбцов могут быть:

  • 5145,6154,4562

Мой запрос:

SELECT resource_id,filename,id FROM image WHERE other_vendors = '".$vendor_id."' 

$vendor_id будет 6154

Теперь, как я могу соответствовать LIKE REGULAR EXPRESSION в SQL QUERY, где я получаю все значения, которые имеют 6154 или 6154 в строке запятой.

+0

попробуйте этот '. * 6154. *' –

ответ

1

Просто используйте встроенную функцию find_in_set, которая строку поиска в списке разделенной запятых:

SELECT resource_id,filename,id FROM image WHERE find_in_set('6154',other_vendors) 
0

Попробуйте что-то вроде:

SELECT resource_id,filename,id FROM image WHERE other_vendors REGEXP '.*(6154){1}.*' 
0
SELECT resource_id,filename,id FROM image WHERE other_vendors = '%6154%' 
1

Я думаю, что это самый простой способ:

SELECT resource_id,filename,id FROM image WHERE (','+other_vendors +',') like '%,$vendor_id,%' 
+0

Я бы тоже использовал этот подход, это единственный ответ, который не будет соответствовать «161545». – funkwurm

+0

Если идентификатор может быть подстрокой разделенного запятой списка (это своего рода необычное поведение), просто удалите все запятые из запроса, что даст только «other_vendors LIKE»% $ vendor_id% '' –

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