Транспонировать часть результатов SQL для консолидации записей

Вы можете использовать следующее регулярное выражение:

(https?.*?\.com\/)(\s+[\w-]*\s+)(https?.*?\.com\/[\w\.]+)

  • (https?.*?\.com\/) Первая группа захвата. Захват http или https, все до .com и косой черты /.
  • (\s+[\w-]*\s+) Вторая группа захвата. Захват пробелов, буквенно-цифровых символов и подстановок, а также пробелов. Вы можете добавить больше символов в набор символов, если это необходимо.
  • (https?.*?\.com\/[\w\.]+) Третья группа захвата. Захватите http или https, все до .com, косую черту /, буквенно-цифровые символы и полную остановку . для расширения. Снова вы можете добавить больше символов в набор символов в этой группе захвата, если вы ожидаете других символов.

Вы можете протестировать регулярное выражение здесь .

В качестве альтернативы, если вы ожидаете переменные URL-адреса и домены, которые вы можете использовать:

(\w*\:.*?\.\w*\/)(\s+[\w-]*\s+)(\w*\:?.*?\.\w*\/[\w\.]+)

Где первая и третья группы захвата теперь соответствуют любым буквенно-цифровым символам, за которыми следует двоеточие : и все до ., буквенно-цифровые символы \w и косую черту. Вы можете проверить это здесь .

Вы можете заменить захваченные группы:

\1\2

Где \1, \2 и \3 являются обратными ссылками на захваченные группы один, два и три соответственно.


Фрагмент питона:

>>import re
>>str = "La-la-la https://example.com/ la-la-la https://example.com/example.PNG"

>>out = re.sub(r'(https?.*?\.com\/)(\s+[\w-]*\s+)(https?.*?\.com\/[\w\.]+)',
       r'\1\2',
       str)
>>print(out)
La-la-la https://example.com/ la-la-la 

0
задан TheMiddle 19 January 2019 в 10:00
поделиться

1 ответ

Вы хотите изменить данные. Одним из методов является условная агрегация. Для этой цели я бы порекомендовал:

select name,
       group_concat(case when comm_rid = 5 then comm_value end) as what_5_means,
       group_concat(case when comm_rid = 6 then comm_value end) as radio,
       group_concat(case when comm_rid = 7 then comm_value end) as whateve_7_means
from . . .
group by name;

Я не знаю, из какого вопроса использовать пункт from.

При этом используется group_concat(), а не max() на тот случай, если у кого-то есть несколько средств связи одного типа.

0
ответ дан Gordon Linoff 19 January 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: