SQL, замените часть строки на электронную почту - PullRequest
0 голосов
/ 04 октября 2018

В моей БД у меня есть столбец user_email со значениями:

aaa@test.com
bbb@test.com
ccc@test.com

Я бы хотел изменить только часть адреса электронной почты, которая идет после @, чтобы в результирующем столбце были значения:

aaa@other.net
bbb@other.net
ccc@other.net

Как мне этого добиться?

Ответы [ 5 ]

0 голосов
/ 04 октября 2018

Вы можете использовать replace, substr и instr вместе как:

SELECT replace( 'aaa@test.com',
         substr('aaa@test.com',instr('aaa@test.com','@'),length('aaa@test.com'))
                              ,'@other.net') as result_str;

 result_str
-------------
aaa@other.net

или из таблицы (tab) со столбцом, который называется email:

select replace(email,substr(email,instr(email,'@'),length(email)),'@other.net') result_str
  from tab;

result_str
-------------
aaa@other.net
bbb@other.net
ccc@other.net

Rextester Demo

0 голосов
/ 04 октября 2018
select concat
        (substring
          ('bbb@test.com',1,char_length
            ('bbb@test.com')-
            char_length
              (substring_index
                ('bbb@test.com','.',-1))),'net') x;

| x            |
| ------------ |
| bbb@test.net |

Просмотр на БД Fiddle

0 голосов
/ 04 октября 2018

использовать функцию замены

демо

select replace(name,substring(name,position('@' in name),length(name)-position('@' in name)+1),'@other.net')

select replace('aaa@test.com',substring('aaa@test.com',position('@' in 'aaa@test.com'),
length('aaa@test.com')-position('@' in 'aaa@test.com')+1),'@other.net')

выход:

val             n
aaa@test.com    aaa@other.net
0 голосов
/ 04 октября 2018

Я нашел следующее решение, которое, кажется, делает свое дело:

UPDATE table_name SET user_email = REPLACE(user_email, '@test.com', '@other.net');
0 голосов
/ 04 октября 2018

используйте SUBSTRING_INDEX и concat fnction

select concat(SUBSTRING_INDEX("aaa@test.com", "@", 1),'@other.net')

output aaa@other.net

, поэтому для вашей колонки user_email это будет

select concat(SUBSTRING_INDEX(user_email, "@", 1),'@other.net')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...