2015-10-15 88 views
0

我在這個主題上發現了一些線程,但答案似乎有點太複雜,我試圖做的。查找字符串中的非數字字符

我正在使用SQL Developer並有一張表,我們可以稱之爲HR_Employees。我必須使用這個表來填充事實表,我們將其稱爲Fact_Key。這個事實表有3列,包括描述以及Employee_Key列(這是主鍵)。

我的任務是找出一種方法來創建Department_ID字段的employee_key。對於公司的一半,這是根據一些薪資信息自動生成的,然後推入Fact_Key表中,但是另一半(合併到上半年)他們不使用相同的工資系統,因此這對我們不起作用。我必須採用Department_ID並通過將其與其他字段(例如employee_number)連接來創建employee_key。見下文:

INSERT INTO FACT_KEY (Employee_Key, Description) 
SELECT RPAD(Employee_Number||Deptartment_ID, 15,'0'), EmployeeJob_Code 
FROM HR_EMPLOYEES 

我填充這使所有的鍵保持在一致的15個字符長度。我遇到的問題是Employee_Key字段是數字數據類型,但Department_ID在隨機位置中有非數字字符。我需要一種方法來刪除這些字符,或者最好將它們更改爲ASCII對應字符。有沒有簡單的方法來做到這一點?

一切我已經看到了似乎過於複雜,我一直在尋找一種更簡單的方式做到這一點(涉及一個或兩個函數),因爲這是進入一個存儲過程,我是針對保持簡單。任何幫助將不勝感激,謝謝!

+0

你能不能改變'employee_key'爲'varchar'的數據類型? –

+0

你想做什麼的真實樣本將會有很大幫助;這裏是一個開始的好地方。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

回答

0

只需使用REGEXP_REPLACE,例如:

select REGEXP_REPLACE('123A45B67CCC89', '[^[:digit:]]','') from dual 

回報:123456789