2016-03-18 13 views
0

「Received Quantity」という列を文字列として表示するOracleテーブルがあります。その文字列の最後の2文字を削除し、残りを数字に変換するにはどうすればよいですか?文字列の最後の2文字を切り捨て、Oracleで数値に変換する方法は?

Select receipt_number 
     ,item_name 
     ,received_quantity 
from item_table 

結果は次のとおりです。

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

私はフィールドに「CS」を削除し、番号に番号を変換し、すべてのこれらの数字の合計を計算するためのコードで助けが必要。

最終的に、これらのアイテムすべてのケース数の合計を計算します。

私がしようとしているコードです:あなたはSUBSTRINGを使用することができます

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

答えて

1

私はそれを

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

from item_table 

group by receipt_number, item_name 

のやり方だことがありますその他多数

+0

私はこのコードを単純なように試しました。それは私のために働いた。ご助力ありがとうございます。私は非常に非常に感謝します。 – user1777929

0

ので、答えは指定できます

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 
+0

のようなクリーンアップ文字列は、私はとても申し訳ありませんでしょう:最も強力な方法は、単にregexp_replace()を使用して番号がない任意の文字を削除することです。私はSQL Serverで作業していると誤解していました。私は実際にOracleデータベースを作成しています。 LEFT関数はOracle上で動作しないと思いますか? – user1777929

+0

あなたはSUBSTRINGのようなSUBSTR関数を持っています。あなたはLEN関数の代わりにLENGTHも使うことができます – 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; 

CS1234

+0

ありがとうございました。私は非常に非常に感謝します。 – user1777929

関連する問題