2017-02-14 147 views
0

我有一個表列名,就像這樣:分離的特殊字符,並顯示它們

Name 
ftyrt_hghjh 
hgdhfg_jhjh 
dfgfh#hvhvj 
vhhghf=dvdf 
hdghfg%bdjfb 

我想單獨的特殊字符,像下面顯示出來:

Name    Special_Char 
ftyrt_hghjh   _  
hgdhfg_jhjh   _ 
dfgfh#hvhvj   # 
vhhghf=dvdf   = 
hdghfg%bdjfb   % 

回答

1
with temp as 
(select 'ftyrt_hghjh' as name from dual 
union all 
select 'hgdhfg_jhjh' as name from dual 
union all 
select 'dfgfh#hvhvj' as name from dual 
union all 
select 'vhhghf=dvdf' as name from dual 
union all 
select 'hdghfg%bdjfb' as name from dual 
) 
select name AS "Name" 
     ,regexp_substr(name, '[^a-zA-Z]') AS "Special Character" 
from temp 

匹配除以外的任何字符或A-Z用正則表達式 Match Special Character

+0

我們可以寫一個沒有溫度 – Gunnu

+0

@Gunnu - 的「溫度」子查詢只是一個方式,從一些基本的測試數據來選擇。據推測,你將擁有一張屬於你自己的數據表。用最後一行代替'temp'。 – BriteSponge

0

你可以使用函數translate來替換所有非特殊字符,實際上將它們從輸入字符串中移除。

假設特殊字符是

_#=%

並假設非特殊字符是從所有小寫a到z 下面的工作:

translate (table.name, '_#=%abcdefghijklmnopqrstuvwxyz', '_#=%')