Обмен технологиями

обратная функция в улье

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Предисловие

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

Знакомство с основными функциями

SELECT reverse(string_column) FROM table_name;
  • 1

Пример:

SELECT reverse('hello world');
  • 1

Результат:
длроу оллех

Настоящий бой

В настоящее время существует три поля: идентификатор пользователя, имя пользователя и комбинация идентификаторов интересов. Текущее требование — получить последнее из каждой комбинации идентификатора пользователя и интересов;

Выполнение:

with temp_test as 
(
    select '1458963' as userid ,'小花'  as  user_name ,'[1,5,8]' as favsid
    union all 
    select '1258963' as userid ,'小明'  as  user_name ,'[3,7,9,10]' as favsid 
    union all  
    select '3245895' as userid ,'小翠'  as  user_name ,'[]' as favsid  
)


select 
userid
,user_name
,reverse(split(favsid,'\,')[0]) as favsid
from  
(select 
userid
,user_name
,regexp_replace(reverse(favsid),'\[|\]','') as favsid
from  temp_test
) tt 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

Результат следующий:

ID пользователяимя пользователяфавсид
1458963цветочек8
1258963Сяо Мин10
3245895Сяокуй