2015-12-29 35 views
0

我有一個包含如下字符串的列的表。從數據庫中獲取子字符串

[email protected]

[email protected]

[email protected]

我需要從@得到的子字符串。(點) 我已經寫了一些SQL,但它有固定的長度,我需要動態查詢來獲取子字符串。

select * from email where'like'%@%';

子字符串查詢 select email,substr(email,4,10)from registration;

請爲我寫一個查詢。

+0

任何人都可以幫助我嗎?我非常感謝。 –

+0

所以對於上面的數據結果將是'winworldsoft'?如果像'sourabh @ winworld.soft.com'這樣的更多點呢? –

+0

如果您不需要通過@之間的字符串進行搜索(點) 那麼只需從'DataBase'中選擇整個字符串,然後 您可以使用正則表達式 – ZeJur

回答

0

substring_index()是最好的辦法:使用嵌套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「)之間的內容。