在字符串

时间:2015-10-15 17:47:23

标签: sql oracle oracle-sqldeveloper

我在这个主题上找到了几个主题,但对于我正在尝试做的事情,答案似乎有点过于复杂。

我正在使用SQL Developer并拥有一个表,让我们称之为HR_Employees。这个表我必须用来填充一个事实表,我们将其称为Fact_Key。此事实表有3列,包括描述以及Employee_Key列(主键)。

我的任务是找出一种从Department_ID字段创建employee_key的方法。对于公司的一半,这是根据一些工资单信息自动生成并推入Fact_Key表但是对于另一半(合并到上半部分),他们不使用相同的工资单系统,所以这对我们不起作用。我必须使用Department_ID并使用它来创建employee_key,方法是将其与其他字段(例如employee_number)连接起来。见下文:

 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对应字符。有一种简单的方法可以做到这一点吗?

我看到的所有东西看起来都太复杂了,而我正在寻找一种更简单的方法(仅涉及一个或两个函数),因为这是进入存储过程而我被指示保持简单。任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

只需使用regexp_replace,例如:

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

返回:123456789