2014-12-13 2 views
0

У меня есть столбец MySQL (текст), который содержит все комментарии с хэш-тегами и я искал способ, чтобы выбрать только хеш-тегиПопытка конкретных значений из столбцов MySQL

Id | Column 
1 | I'm #cool and #calm 
2 | l like #manchester 
3 | #mysql troubles not #cool 
+0

В конечном счете ... было бы проще отделить эти вещи до вставки. У вас будет таблица «tag», а затем таблица соединения «tag_comment». Есть ли ограничение на количество тегов, которые может содержать комментарий? Что вы в конечном итоге хотите сделать с результатом? Вы можете использовать регулярное выражение для очистки всего, что не начинается с '#', но я предполагаю, что вы хотите разделить этот результат на строки или столбцы ...? Там много кода и хранимых процедур там для такого рода вещи, если вы Google немного. –

+0

Я не думаю, что вы действительно можете сделать это на уровне запросов, поскольку запросы не предназначены для выполнения этой задачи. Однако вы можете написать некоторую хранимую процедуру, чтобы выполнить задание или использовать уровень приложения, чтобы справиться с этим. И лучший способ - нормализовать данные, если вы хотите выполнить задание с запросом. –

ответ

1

Вы можете сделать то, что хотите, используя substring_index() для синтаксического разбора. Если предположить, что символ после хэш-тега пробел, вы можете сделать:

select t.*, 
     substring_index(substring_index(comment, '#', n.n + 1), ' ', 1) 
from table t join 
    (select 1 as n union all select 2 union all select 3) n 
    on n.n <= length(t.comment) - length(replace(t.comment, '#', '')) ; 

Фантазии on положение рассчитывает количество # в комментарии, который рассчитывает количество тегов.

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