Еще один способ. Используйте reverse
, split
от '.'
, возьмите первый элемент массива, вычислите длину:
select length(split(reverse(emailaddress),'\\.')[0]);
Также regexp_extract
работает нормально. Тестирование этих двух методов:
with data as (
select stack (2,
'asdfasdf@gmail.com',
'asdfasdf@gmail.co'
) as emailaddress
)
select emailaddress,
length(split(reverse(emailaddress),'\\.')[0]) length_method_1,
length(regexp_extract(emailaddress, '\\.(.+)$',1)) length_method_2
from data;
Результат:
OK
emailaddress length_method_1 length_method_2
asdfasdf@gmail.com 3 3
asdfasdf@gmail.co 2 2
Time taken: 6.253 seconds, Fetched: 2 row(s)