ВЫБРАТЬ N строк до и после строки, соответствующей условию?

Поведение, которое я хочу воспроизвести, похоже на grep с флагами -A и -B . например grep - 2 -B 2 "hello" myfile.txt предоставит мне все строки, в которых есть "hello", а также 2 строки до и 2 строки после него. Предположим, что эта схема таблицы:

+--------+-------------------------+
| id     |    message              |
+--------+-------------------------+
| 1      | One tow three           |
| 2      | No error in this        |
| 3      | My testing message      |
| 4      | php module test         |
| 5      | hello world             |
| 6      | team spirit             |
| 7      | puzzle game             |
| 8      | social game             |
| 9      | stackoverflow           |
|10      | stackexchange           |
+------------+---------------------+

Теперь запрос типа: Выберите * из таблицы, где сообщение типа «% hello%» приведет к следующему:

5 | hello world

Как я могу указать другой параметр «N», который выбирает N строк до и N строк после сопоставленной записи, т.е. для N = 2 результат должен быть:

    | 3      | My testing message      |
    | 4      | php module test         |
    | 5      | hello world             |
    | 6      | team spirit             |
    | 7      | puzzle game             |
  • Для простоты предположим, что «like% TERM%» соответствует только 1 строке.
  • Здесь результат должен быть отсортирован по полю автоинкремента id .
15
задан Lightness Races with Monica 15 November 2011 в 13:45
поделиться