2017-08-08 77 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