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;
Run Code Online (Sandbox Code Playgroud)
越来越
ORA-01858: a non-numeric character was found where a numeric was expected
ORA-01722: invalid number
Run Code Online (Sandbox Code Playgroud)
请分别建议我在expr1和expr2中给出的数据类型是什么.
还请告诉我这是怎么回事?
SELECT inv_no,NVL2(inv_date,sysdate-inv_date,sysdate)
FROM invoice
Run Code Online (Sandbox Code Playgroud)
第二个和第三个参数NVL2应该是相同的数据类型.所以,假设inv_date是DATE,你需要varchar2像那样;
SELECT inv_no, NVL2(inv_amt, to_char(inv_date, 'dd-mon-yyyy hh24:mi:ss'), 'Not Available') FROM ...
Run Code Online (Sandbox Code Playgroud)
或者你想要的任何格式字符串.否则,Oracle将转换第3个参数'Not Available'以匹配第2个参数的数据类型.这将尝试转换'Not Available'为日期和崩溃.
类似地,在第二个示例中,您必须通过转换inv_amt*.25为char to_char,例如to_char(inv_amt*.25).
| 归档时间: |
|
| 查看次数: |
3849 次 |
| 最近记录: |