也许我假设括号错误或逗号错误?我知道这是一个相当新手的问题,所以我提前道歉。我原来有这个代码:
es3.last_name || ', ' ||SUBSTR(es3.first_name,1,1)
但是es3是一个Left Outer Join,所以所有的空白都显示了','所以我在下面尝试了这个并且得到了ERROR
ORA-00909:参数数量无效
NVL(es3.last_name, ' ' , es3.last_name || ', ' ||SUBSTR(es3.first_name,1,1))
谢谢!
答案 0 :(得分:2)
来自文档:
Oracle / PLSQL中NVL函数的语法是:
NVL( string1, replace_with )
您正在为它提供3个参数,因此出现错误消息。我相信你想要这个:
CASE WHEN es3.last_name IS NULL
THEN ''
ELSE es3.last_name || ', ' ||SUBSTR(es3.first_name,1,1)
END
答案 1 :(得分:1)
NVL只能有两个参数
NVL(String, Value )
因此上述功能将返回' Value'当string为null时。并且' String'当string不为null时自己。
使用NVL2。 NVL2可以有三个参数
NVL2(String, Value_when_not_null, Value_When_Null)
所以当' String'不为null,它返回第二个参数。当String为null时,它返回第三个参数。
所以你的功能应该是
NVL2(es3.last_name||es3.first_name , es3.last_name||','||es3.first_name, ' ')
答案 2 :(得分:1)
你必须只有两个参数
如果nvl函数
NVL(es3.last_name,'Özhan')
为空,则Özhan
中的会返回es3.last_name
。
即。问题源于有两个以上的论点。
在问题中有问题的部分是.. ' ' ,
..在
NVL(es3.last_name,
' ' ,
es3.last_name ||',' || SUBSTR(es3.first_name,1,1))