2017-03-29 53 views
0

我有表有兩個VARCHAR2列:select語句來獲得兩個字符串之間的值在甲骨文

trs_no trs_name 
------ -------- 
JV1 ddd 
.  . 
.  . 
.  . 
JV580 deee 

我想選擇例如JV280JV320

之間的所有trs_no我試過之間的正常的,但沒有工作,因爲我發現JV29的結果

所以我也試圖得到JV280JV320之間的長度它之間的工作ked,但長度不同時失敗。

我該如何解決這個問題?

回答

2

斯普利特trs_no成兩個字符的字符串前綴和數字後綴和seperately對它們進行比較:

SELECT * 
FROM your_table 
WHERE SUBSTR(trs_no, 1, 2) = 'JV' 
AND TO_NUMBER(SUBSTR(trs_no, 3)) BETWEEN 280 AND 320 

如果trs_no可以有不同大小的字符串前綴,那麼你可以使用正則表達式:

SELECT * 
FROM your_table 
WHERE REGEXP_SUBSTR(trs_no, '^(\D+)(\d+)$', 1, 1, NULL, 1) = 'JV' 
AND TO_NUMBER(REGEXP_SUBSTR(trs_no, '^(\D+)(\d+)$', 1, 1, NULL, 2)) 
     BETWEEN 280 AND 320; 
+0

它的工作良好的SQL加,但在oracle形式不! –

+0

有沒有更簡單的方法? –

+0

@AbdelrhmanHesham您可以將幾個虛擬列添加到表中,然後從表單中選擇它們。 – MT0