SAP HANA | Получить строку между двумя строками - PullRequest
0 голосов
/ 07 мая 2019

У меня есть данные ниже в моей таблице T -

    ROW      Col1

      1       utm_source:|utm_medium:kiosk|device:d|expires:Sun, 02 Jun 
              2019 13:27:28 GMT|IP:10.YYY.YY.YY|
      2       IP:10.XXX.XX.XX|storeid:TL04K2|
      3       IP:10.YY.YX.XZ|

Мне нужно получить IP-адрес из этого столбца, который будет обозначаться как начало строки как «IP:», а конец строки как «|»

Возможно ли получить это с substring_regexp в хане?

Ответы [ 2 ]

2 голосов
/ 09 мая 2019

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

select substr_regexpr('IP:+(?<=IP:)(.*?)(?=\|)' in your column ) from dummy;
0 голосов
/ 09 мая 2019

Да, это возможно, и даже с функцией SUBSTRING_REGEXPR, которую вы упомянули.

Просто создайте регулярное выражение, соответствующее строке между IP: и |, и используйте его в функции:

 SELECT ROW
      , SUBSTRING_REGEXPR (' -- put your regular expression here -- ' IN "Col1") as IP_EXTRACTED
 FROM 
      T;

Существует несколько способов выражения вашего условия в виде регулярного выражения., может быть

IP:([[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3})\| 

Этот будет соответствовать только IP-адресам, которые имеют от 1 до 3 цифр между точками (но не любые символы.

SELECT ROW
  , SUBSTRING_REGEXPR ('IP:([[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3})\|'
                      IN "Col1" 
                      GROUP 1) as IP_EXTRACTED
FROM 
  T;
...