2017-02-05 65 views
-1

我需要幫助分隔符在SQL中。我正在研究DB2,但Oracle也很好。SQL分隔符(DB2但ORACLE也可以)

我需要建立查詢在那裏我已經在格式得到數據:[email protected] 其中「AAA」,「BBB」,「CCC」,「DDD」有沒有固定長度。查詢應該返回bbb和ddd。在DB2中,我可以削減'@ domain.com',這讓我真的很忙。休息我不知道如何移動。我嘗試了SUBSTR,但沒有任何工作像它應該超出我的查詢超長。

我需要查詢不阻止。 實施例:在列 數據:

[email protected] 
Alexia.Nova.[email protected] 
[email protected] 

一般我需要從第一和第二分離器.和所述一個這在前面@之間獲取數據。

+0

分隔符的數量是否有限制?在「@」之前,您最多顯示三段。有沒有行有四個?四個可能或允許?最低兩個? – user2338816

回答

0

我確定有人會有一些聰明的REGEX方式來做到這一點,但這是一個辦法。

with test as 
(select '[email protected]' col1 from dual union all 
select '[email protected]' from dual union all 
select '[email protected]' from dual 
) 
select col1 
     , substr(col1, 1, dot_one-1) f1 
     , substr(col1, dot_one+1, dot_two - dot_one -1) f2 
     , no_domain 
     , substr(no_domain, dot_before_at+1) f3 
from 
(
select col1 
     ,instr(col1, '@', -1) at_pos 
     ,instr(col1, '.',1,1) dot_one 
     ,instr(col1, '.',1,2) dot_two 
     ,substr(col1, 1, instr(col1, '@', -1)-1) no_domain 
     ,instr(substr(col1, 1, instr(col1, '@', -1) -1) , '.', -1) dot_before_at 
from test 
) 
相關問題