【问题标题】:SQL to replace smart quotesSQL替换智能引号
【发布时间】:2010-10-14 09:23:37
【问题描述】:

有人知道用 ASCII 表亲替换 MS Office 智能引号的 SQL 命令吗?我正在使用 oracle 数据库,字段类型为 varchar2

【问题讨论】:

    标签: sql oracle smart-quotes


    【解决方案1】:
    REPLACE(REPLACE(str, '`', ''''), '´', '''')
    

    还是我错过了你的问题?

    【讨论】:

      【解决方案2】:
      update table set column = replace( column, string_to_replace, [ replacement_string ] )
      

      【讨论】:

        【解决方案3】:

        更新表集column = replace(replace(column, chr(147),'"'), chr(148), '"')

        【讨论】:

        • 如果数据库中的字符集是代码页 1252(西欧)或一些类似的代码页,这是正确的。对于其他字符集,智能引号的编码可能不同。
        【解决方案4】:

        TRANSLATE 比 REPLACE 更合适。

        TRANSLATE(str, '`´', '''''')
        

        http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions204.htm#sthref2477

        【讨论】:

          【解决方案5】:

          我也遇到过类似的问题。对我来说,在将引号存储在数据库中之后,它们就出现了“Â'”。

          SELECT abstract FROM foo WHERE version = '1.0' and newscode = 'au20309';
          

          MaeÂ'r ffordd gynaliadwy y mae bwyd yn cael ei dyfu, ei brynu aÂ'i baratoi ...

          这就是我替换它们的方式。首先找到那个不寻常的“”字符的 ascii 值。

          SELECT ascii('Â') FROM DUAL; -- returns 50050
          

          然后使用 chr 函数来渲染“”。 ||函数连接两个字符。 q 函数对于“引用”智能引号字符串很有用..

          SELECT REPLACE(abstract,chr(50050) || q'#’#' , q'#'#') 
          FROM foo 
          WHERE version = '1.0' and newscode = 'au20309';
          

          Mae'r ffordd gynaliadwy y mae bwyd yn cael ei dyfu, ei brynu a'i baratoi ...

          这对我来说在我们的 Oracle 10 系统上运行良好。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-10-21
            • 2013-11-17
            • 1970-01-01
            • 2011-11-07
            • 2010-11-18
            • 1970-01-01
            • 2013-01-31
            • 2020-03-30
            相关资源
            最近更新 更多