2016-03-18 11 views
0

"Alınan Miktar" sütununu bir dize olarak gösteren bir Oracle tablom var. Bu dizideki son iki harfi nasıl kaldırırım ve kalanını bir sayıya dönüştürürüm?Dize içindeki son iki harfi nasıl keser ve Oracle'da sayıya nasıl dönüştürülür?

Select receipt_number 
     ,item_name 
     ,received_quantity 
from item_table 

sonucudur:

+-----------+----------+-------+ 
| Rcpt 01|Kool GLue |234CS | 
+-----------+----------+-------+ 
| Rcpt 02|Red GLue |10CS | 
+-----------+----------+-------+ 
| Rcpt 03|Bad GLue |1000CS | 
+-----------+----------+-------+ 

ben alana 'CS' kaldırıp bir sayıya sayıları dönüştürmek ve daha sonra tüm bu sayıların toplamını hesaplamak için koduyla yardıma ihtiyacım var.

Sonunda, tüm bu öğeler için olan Case sayısı toplamını hesaplamak istiyorum.

deniyorum kodudur:

Select receipt_number 
    ,item_name 
    ,SUM (to_number(cast(SUBSTR(received_quantity, 1, LENGTH(received_quantity) - 2), -2))) 

from item_table 

group by receipt_number, item_name 

cevap

1

Ben

Select receipt_number 
     ,item_name 
     , SUM(TO_NUMBER(TRIM(REPLACE(received_quantity,'CS')))) 

from item_table 

group by receipt_number, item_name 

vardır yapmak yoludur bu:

Select receipt_number 
     ,item_name 
     ,SUM (to_number(cast(received_quantity, -2))) 
from item_table 
group by receipt_number, item_name 
+0

Bu kodu basit göründüğü gibi denedim. Benim için çalıştı. Yardımın için çok teşekkürler. Bunu çok takdir ediyorum. – user1777929

0

Çok cevap olabilir SUBSTRING kullanabilirsiniz Diğerleri:

+0

gibi temizleme dizeleri çok üzgünüm olacaktır: en sağlam yolu basitçe regexp_replace() kullanarak bir sayı değil herhangi bir karakter kaldırmaktır. SQL Server ile çalıştığımı yanlış bilgilendirdim. Aslında bir Oracle veritabanı üzerinde çalışıyorum. Sanırım SOL işlevi Oracle üzerinde çalışmıyor mu? – user1777929

+0

SUBSTRING gibi SUBSTR işlevine sahipsiniz. Ayrıca LEN işlevini yerine LEN işlevini kullanabilirsiniz – FLICKER

1

Select receipt_number, 
     item_name, 
     SUM(to_number(regexp_replace(received_quantity, '[^0-9]', ''))) as quantity 
from item_table 
group by receipt_number, item_name; 

da CS1234

+0

Yardımlarınız için çok teşekkür ederim. Bunu çok takdir ediyorum. – user1777929

İlgili konular