替换Select语句上的函数,删除(-)



我在一个存储过程中有一个查询,试图向该表中插入一些金额:

KPI 金额
第一个 -
-100
第三次 200

NULLIF可用于替换整个值(而不仅仅是字符串中的字符(,如果这些值匹配某些内容。

SELECT
KPI,
NULLIF(amount, '-')  AS amount  -- If the amount is '-' return a NULL instead
FROM
yourTable

我可以想出其他答案中没有提到的另外两种简单方法来清理下面的-值。我建议使用VALIDATE_CONVERSION方法,因为这也可以处理AMOUNT列中的任何空格。

WITH
sample_data (KPI, AMOUNT)
AS
(SELECT 'First', '-' FROM DUAL
UNION ALL
SELECT 'Second', '-100' FROM DUAL
UNION ALL
SELECT 'Third', '200' FROM DUAL)
SELECT kpi,
amount,
RTRIM (amount, '-')                                                    amt1,
CASE validate_conversion (amount AS NUMBER) WHEN 1 THEN amount END     AS amt2
FROM sample_data;

最新更新