oracle插入数据单引号转义 替换

    技术2022-07-20  82

    背景

    PostgreSql数据需要同步到oracle,由于GP数据库查出来的数据有单引号导致无法插入数据到oracle. gp数据库查出来的数据是这样的: mother’s day 在INSERT到oracle中会被解析为 'mother’s day’这样,所以报错无法插入。

    解决方案

    将包含单引号的字段替换转义成oracle可以转化的字符

    SELECT to_char(COALESCE (publish_time, now()),'yyyy-mm-dd hh24:mi:ss') AS ROW_LASTUPDATE_TIME, REPLACE ( module_key,chr(39),'''||''''''') AS kkk -- **重点在这里** FROM t_ext_rec_publish;

    kkk是被替换之后的结果,转译成mother’||’’'s day 就可以插入数据库中了

    oracle REPLACE 函数是用另外一个值来替代串中的某个值。 REPLACE ( module_key,chr(39),’’’||’’’’’’’)

    chr(39) 代表单引号 ’‘’’||’’’’’’’ 转义之后是这样的 ‘||’’’

    oracle单引号转义是左1右3,或者左3右1

    Processed: 0.009, SQL: 9