我有一个适用于mysql和php的页面,所以我试图在同一页面中使用oracle和php。我是pl / sql的新手,我遇到了问题。 (顺便说一句,代码适用于mysql)
我在下面的代码示例中遇到错误(ORA-00909),似乎有人可以告诉我什么问题?
concat(isnull(concat(sihe.V_1_INT, '~'), ''),
isnull(concat(sihe.V_1_DOUBLE, '~'), ''),
isnull(concat(sihe.V_1_DATE_1, '~'), ''),
isnull(sihe.V_1_DATE_2, '')
) AS V_OBIS_CODE_VALUE_1,
编辑:mysql版本
concat(ifnull(concat(`sihe`.`fld_1_int`, '~'), ''),
ifnull(concat(`sihe`.`fld_1_double`, '~'), ''),
ifnull(concat(`sihe`.`fld_1_date_time_1`, '~'),
''),
ifnull(`sihe`.`fld_1_date_time_2`, '')) AS `fld_obis_code_value_1`,
答案 0 :(得分:3)
您只能在Oracle CONCAT函数中传递两个参数,因此您收到此错误 oracle中也不支持isnull
在oracle中尝试下面的简单示例,因为oracle在内部将空字符串更改为Null,所以可以忽略空检查
sihe.v_1_int||'~'||v_1_double||'~'||v_1_date_1||'~'||v_1_date_2
AS V_OBIS_CODE_VALUE_1
<强> EDIT1: - 强>
通过使用COALESCE而不是IFNULL并且只使用两个参数的CONCAT,我们可以在MYSQL中使用以下代码和ORACLE link for testing
select concat(concat(concat(concat(concat(concat('string1','~'),
COALESCE(null,'string2')),'~'),'string3'),'~'),
'string4') from dual;