2013-05-27 2 views
1


У меня есть поле events таблицы, которая может содержит:MySQL выбрать, где строка содержит символы

  • только последовательности числа, например: 45
  • или последовательность числа, деленную на символе | , например 55|65|76

Я думаю, что я должен использовать LIKE, но я не знаю, как. Вы можете мне помочь?

Благодаря

+0

Вот ваша помощь: исправьте свой дизайн стола и разделите эти | -сепаратированные символы на правильный детский стол. И нет, мы не здесь, чтобы твоя работа для тебя. Попробуйте сами написать запрос, и мы попытаемся помочь исправить это. –

+0

Что вы сомневаетесь? Используя 'LIKE', что вы хотите искать? – Luv

+0

Я хочу найти номер в этом поле таблицы –

ответ

3

Я бы рекомендовал использовать CONCAT, чтобы добавить трубу | до и после вашего поля, а затем с помощью поиска LIKE. Что-то вроде этого:

SELECT * 
FROM YourTable 
WHERE concat('|',field,'|') like '%|45|%' 

Однако я настоятельно рекомендую попробовать, чтобы нормализовать данные. Принимая во внимание сохранение их в отдельных строках, что упростило бы поиск/поддержку.

0

Чтобы исправить запрос, используйте:

Select * from tbl where events='45' or events like '%|45' or events like '%|45|%' or 
events like '45|%' 

, но это очень медленно и не должны использоваться.

Вместо этого сделайте так, как это делает Marc B, и создайте дочерний стол events (ID, event).

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