2015-08-26 2 views
1

У меня есть столбец таблицы, которые содержат строки разделенных , как такКак найти конкретные строки между запятыми в MySQL?

Algebraic topology,Riemannian geometries 
Classical differential geometry,Noncommutative geometry,Integral transforms 
Dark Matter 
Spectral methods,Dark Energy,Noncommutative geometry 
Energy,Functional analytical methods 

Я пытаюсь найти строку MySQL, которая имеет строку между запятой, например, если бы я был поиском Noncommutative geometry, я хочу, чтобы выбрать эти два ряда

Classical differential geometry,Noncommutative geometry,Integral transforms 
Spectral methods,Dark Energy,Noncommutative geometry 

Это то, что я пытался

SELECT * FROM `mytable` WHERE ``col` LIKE '%Noncommutative geometry%' 

, который работает отлично , Но проблема в том, что если бы я искал Energy Я хочу, чтобы выбрать строку

Energy,Functional analytical methods 

, но мой код дает два ряда

Energy,Functional analytical methods 
Spectral methods,Dark Energy,Noncommutative geometry 

, не то, что я искал. Есть ли способ исправить это, так что он находит только строки, которые содержат строку между запятыми?

+0

как о 'SELECT * FROM туЬаЫе WHERE Col LIKE '% $ SEARCHTERM% '' – RamRaider

+0

насчет 'WHERE FIND_IN_SET (' Энергия', цв)> 0 '? https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set – rlanvin

+0

"строка между запятыми ???" .. вы хотите только строку, которая Contes Dark Energy. .. –

ответ

1

Дайте это попробовать, используя REGEXP оператора:

SELECT * FROM `mytable` 
WHERE `col` REGEXP '(^|.*,)Noncommutative geometry(,.*|$)' 

SELECT * FROM `mytable` 
WHERE `col` REGEXP '(^|.*,)Energy(,.*|$)' 

выражение, которое используется ('(^|.*,)$searchTerm(,.*|$)') требует условия поиска, чтобы быть либо предшествует запятой или начало строки, а затем либо запятой или концом строки.

0

вы можете сделать, как этот

SELECT * FROM `mytable` WHERE `col` LIKE '%,$yourString,%' 
         or `col` LIKE '$yourString,%' 
         or `col` LIKE '%,$yourString' 
+1

Проблема в том, что если бы я искал «Энергию», он перечислил строку «Спектральные методы, темная энергия, некоммутативная геометрия» – user3741635

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