我有一個包含如下字符串的列的表。從數據庫中獲取子字符串
我需要從@得到的子字符串。(點) 我已經寫了一些SQL,但它有固定的長度,我需要動態查詢來獲取子字符串。
select * from email where'like'%@%';
子字符串查詢 select email,substr(email,4,10)from registration;
請爲我寫一個查詢。
我有一個包含如下字符串的列的表。從數據庫中獲取子字符串
我需要從@得到的子字符串。(點) 我已經寫了一些SQL,但它有固定的長度,我需要動態查詢來獲取子字符串。
select * from email where'like'%@%';
子字符串查詢 select email,substr(email,4,10)from registration;
請爲我寫一個查詢。
substring_index()
是最好的辦法:使用嵌套SUBSTRING_INDEX功能
select substring_index(substring_index(email, '@', -1), '.', 1)
我可以搜索從後向開始。點並以@結尾以獲得相同結果 –
@SourabhKumar。 。 。這不工作? –
是的這是工作。 –
這應做到:
SELECT REVERSE(SUBSTRING(REVERSE(SUBSTRING_INDEX(email, '@', -1)), LOCATE('.', REVERSE(email))+1));
這將包括@之間,最後一個(例如所有點「[email protected]」將導致「一個。 long.domain.name「),而不是嵌套的SUBSTRING_INDEX,它只會返回@和第一個點(例如」a「)之間的內容。
任何人都可以幫助我嗎?我非常感謝。 –
所以對於上面的數據結果將是'winworldsoft'?如果像'sourabh @ winworld.soft.com'這樣的更多點呢? –
如果您不需要通過@之間的字符串進行搜索(點) 那麼只需從'DataBase'中選擇整個字符串,然後 您可以使用正則表達式 – ZeJur