gpt4 book ai didi

sql - 为什么这些 NVL() 语句在 SQL 中是错误的?

转载 作者:行者123 更新时间:2023-12-02 07:04:24 24 4
gpt4 key购买 nike

SELECT inv_no,NVL2(inv_amt,inv_date,'Not Available')
FROM invoice;

SELECT inv_no,NVL2(inv_amt,inv_amt*.25,'Not Available') FROM invoice;

得到

ORA-01858: a non-numeric character was found where a numeric was expected
ORA-01722: invalid number

分别请建议我可以在 expr1 和 expr2 中提供哪些数据类型。

另外请告诉我这是怎么回事?

SELECT inv_no,NVL2(inv_date,sysdate-inv_date,sysdate)
FROM invoice

最佳答案

NVL2 的第二个和第三个参数应该是相同的数据类型。因此,假设 inv_date 是 DATE,您需要将其作为 varchar2 之类的;

SELECT inv_no, NVL2(inv_amt, to_char(inv_date, 'dd-mon-yyyy hh24:mi:ss'), 'Not Available') FROM ...

或您想要的任何格式字符串。否则 Oracle 将转换第三个参数 'Not Available' 以匹配第二个参数的数据类型。这将尝试将 'Not Available' 转换为日期并崩溃。

与第二个示例类似,您必须通过to_charinv_amt*.25 转换为char,例如to_char(inv_amt*.25)

关于sql - 为什么这些 NVL() 语句在 SQL 中是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14834211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com