Приведенные данные теста круглые споткнулся успешно:
WITH somerow(name, blobofgarble) AS (
SELECT
TEXT 'Alexander',
BYTEA E'#\n#Fri Mar 15 14:58:18 PDT 2014\nBUs=ALL\nsite=33$36$354$380$357$360$36$353$36$38$39$34$31$355\n'
)
SELECT name, encode(blobofgarble, 'escape') FROM somerow;
Теперь, я не могу себе представить, почему вы бы хранить эту информацию в качестве bytea
а не text
поле, но ... ну, Наверное, должна быть причина. Я буду полагаться на упрощающее предположение о том, что данные при сбежании могут рассматриваться как довольно разумно сформированные text
, так как в противном случае вся концепция «линий» является мусором, и ваш вопрос не имеет смысла.
С этого предположения можно использовать regexp_split_to_table
разделить на переводы строк, получить несколько более здраво сформированную данные:
WITH (...)
SELECT name, garblepart FROM somerow, regexp_split_to_table(encode(blobofgarble, 'escape'), E'\n') AS garblepart;
name | garblepart
-----------+------------------------------------------------------
Alexander | #
Alexander | #Fri Mar 15 14:58:18 PDT 2014
Alexander | BUs=ALL
Alexander | site=33$36$354$380$357$360$36$353$36$38$39$34$31$355
Alexander |
(5 rows)
(это неявный LATERAL
запрос, поэтому он будет работать только в PostgreSQL 9.3 и выше).
Теперь вы можете использовать довольно обычные операции, чтобы найти ряд интересных и извлечь нужную часть, в данном случае с некоторым более сопоставлением с образцом:
WITH (...)
SELECT
name, substring(garblepart from '=(.*$)')
FROM somerow,
regexp_split_to_table(encode(blobofgarble, 'escape'), E'\n') AS garblepart
WHERE garblepart LIKE 'site=%';
name | substring
-----------+-------------------------------------------------
Alexander | 33$36$354$380$357$360$36$353$36$38$39$34$31$355
(1 row)
Теперь идет исправить вашу схему так, что вы храните ваши данные безопасны и не нужно это делать.
Каково определение схемы для таблицы данных? –
@ DavidChan 'Column | Тип | Модификаторы | Хранение | Цель статистики | Описание ---------------- + ------------------------ + ------ ------------------------------------------------- + ---------- + -------------- + ------------- thename | различный характер (80) | не null | расширенный | | thedata | bytea | | расширенный | | ' – user3486527
Какой ужасный способ хранить информацию - вы, кажется, вставляете ее в blob. Это будет совсем не интересно получать запросы от SQL. (Кстати, http://sqlfiddle.com/ было бы удобно,). –