如何截断字符串中的最后两个字母并在 Oracle 中转换为数字?
How to truncate last two letters in a string and convert to number in Oracle?
我有一个 Oracle table 将列 'Received Quantity' 显示为字符串。如何删除该字符串中的最后两个字母并将其余字母转换为数字?
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' 并将数字转换为数字,然后计算所有这些数字的总和。
最后,我想计算所有这些项目的案例数总和。
我正在尝试的代码是:
Select receipt_number
,item_name
,SUM (to_number(cast(received_quantity, -2)))
from item_table
group by receipt_number, item_name
您可以使用 SUBSTRING
所以答案可以是:
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
我就是这样做的
Select receipt_number
,item_name
, SUM(TO_NUMBER(TRIM(REPLACE(received_quantity,'CS'))))
from item_table
group by receipt_number, item_name
还有很多
最可靠的方法是使用 regexp_replace()
:
简单地删除任何不是数字的字符
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
这样的字符串
我有一个 Oracle table 将列 'Received Quantity' 显示为字符串。如何删除该字符串中的最后两个字母并将其余字母转换为数字?
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' 并将数字转换为数字,然后计算所有这些数字的总和。
最后,我想计算所有这些项目的案例数总和。
我正在尝试的代码是:
Select receipt_number
,item_name
,SUM (to_number(cast(received_quantity, -2)))
from item_table
group by receipt_number, item_name
您可以使用 SUBSTRING
所以答案可以是:
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
我就是这样做的
Select receipt_number
,item_name
, SUM(TO_NUMBER(TRIM(REPLACE(received_quantity,'CS'))))
from item_table
group by receipt_number, item_name
还有很多
最可靠的方法是使用 regexp_replace()
:
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