2015-10-15 90 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