数据库表字段及记录如下:
listid            controlname                          controlvalue
67561 personaladvice_zonghuiq_yijian &nbsp;&nbsp;&nbsp;&nbsp;附件二:承办协议在下方"甲方签字盖章"处用印,2份;<br>附件三:会议承办协议,在下方"甲方签字盖章"处用印,2份. 
67561 personaladvice_zonghuiq_yijian &nbsp;&nbsp;&nbsp;&nbsp;同意请求编写一条update的sql,将controlvalue中的双引号("")改成汉字格式的双引号(“”)更改结果如下:listid            controlname                          controlvalue
67561 personaladvice_zonghuiq_yijian &nbsp;&nbsp;&nbsp;&nbsp;附件二:承办协议在下方“甲方签字盖章”处用印,2份;<br>附件三:会议承办协议,在下方“甲方签字盖章”处用印,2份. 
67561 personaladvice_zonghuiq_yijian &nbsp;&nbsp;&nbsp;&nbsp;同意这条语句该怎么写呢?关键是where判断也不好写,内容判断也觉得难。

解决方案 »

  1.   

    select replace(r1,'章"','章”') from(
    select replace('"甲方签字盖章"','"甲','“甲') as r1 from dual)
      

  2.   

    不能用select replace(r1,'章"','章”') from(
    select replace('"甲方签字盖章"','"甲','“甲') as r1 from dual)
    他这个内容是变动的,希望对下次出现这个问题也有效,可不可以indexOf(")?
      

  3.   

    select translate('“甲方签字盖章”','“”','""') from dual;
    按需要添加符号
      

  4.   


    -- 用正则表达式匹配
    update tab set controlname=regexp_replace(controlname, '\"([^\x00-\xff]*)\"', '“\1”')
      

  5.   


    select regexp_replace('承办协议在下方"甲方签字盖章"处用印,2份;<br>附件三:会议承办协议,在下方"甲方签字盖章"处用印',
    '\"([^\x00-\xff]*)\"','“\1”') from sys.dual;
      

  6.   

    -- \1 用来指定正则表达式中的第一个子匹配(第一个用小括号括起的部分)。
    -- . 表示任意字符;* 表示匹配 0 或多个正好在它之前的那个字符。select regexp_replace('承办协议在下方"甲方签字盖章"处用印', '"(.*)"', '“\1”') from sys.dual;