2015-12-29 6 views
0

У меня есть таблица со столбцом, который содержит строки, как показано ниже.Извлечение подстроки из базы данных

[email protected]

[email protected]

[email protected]

Мне нужно получить подстроку от @ к. (Точка) я пишу некоторые sql, но он имеет фиксированную длину. Мне нужен динамический запрос для получения подстроки.

выбрать * из регистрации где электронная почта, как '% @%';

Подстрока Запрос выберите адрес электронной почты, субстрат (адрес электронной почты, 4,10) от регистрации;

пожалуйста и один запрос на запись для меня.

+0

Может кто-нибудь мне помочь? Я был бы очень признателен. –

+0

, так что результат будет 'winworldsoft' для вышеуказанных данных? что, если есть еще несколько точек типа 'sourabh @ winworld.soft.com'? –

+0

Если вам не нужно искать по строке от @ до. (Точка) , тогда просто выберите целую строку из 'DataBase' и после этого Вы можете использовать RegEx – ZeJur

ответ

0

substring_index() является лучшим подходом:

select substring_index(substring_index(email, '@', -1), '.', 1) 
+0

можете ли я искать в начале назад. Точка и конец с @ для того же результата –

+0

@SourabhKumar. , , Это не работает? –

+0

да это работает. –

1

Это следует сделать это:

SELECT REVERSE(SUBSTRING(REVERSE(SUBSTRING_INDEX(email, '@', -1)), LOCATE('.', REVERSE(email))+1)); 

Это будет включать в себя все точки между @ и последней единицы (например, «[email protected]» приведет к «а. long.domain.name "), в отличие от вложенного SUBSTRING_INDEX, который будет возвращать только то, что находится между @ и первой точкой (например,« a »).

Смежные вопросы