我在一个存储过程中有一个查询,试图向该表中插入一些金额:
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;