2017-08-08 52 views
0

我想执行Oracle中两个表之间的连接,其中一个表中的列是另一个表中的字符串和数字。Oracle修剪正则表达式

我需要执行某种修剪功能的字符串版本,因为它是一个8字符的字段,并且在数字少于8位的情况下将以0 s为先导。例如,123 = '00000123'。不管领先的0 s的数量如何,我可以得到字符串'00000123'等于'123'

谢谢!

+1

你可能想看看数据和执行计划,看它是否是更好的字符串转换为数字,或数一个零填充字符串,以最大限度地减少开销并在比较列值时充分利用任何索引等。有了大量的数据或查询,你会运行很多,可能值得在其中一个表中添加一个索引虚拟列或基于函数的索引。 –

回答

1

使用to_number转换功能:

SELECT to_number('00000123') 
FROM dual; 

| TO_NUMBER('00000123') | 
|-----------------------| 
|     123 | 

演示:http://sqlfiddle.com/#!4/1792d/18

+0

哇。那很简单,呵呵?! 谢谢! – am340