【问题标题】:How to replace escape character in Netezza column如何替换 Netezza 列中的转义字符
【发布时间】:2017-06-06 21:25:44
【问题描述】:

我正在尝试替换 Netezza 列中的转义字符,但它没有正确替换。 请帮我解决这个问题。

select replace('replaces\tring','\','\\\\');

我需要输出为replaces\\\\tring。以下是我收到的错误消息...

错误 [42S02] 错误:函数“替换(未知,未知,未知)” 不存在 无法识别满足给定的函数 参数类型您可能需要添加显式类型转换

提前致谢。

【问题讨论】:

  • 我刚试过这个,它给了我你想要的输出。它给了你什么?
  • 我刚刚编辑并添加了有问题的错误消息,请查看并给我一些建议。

标签: netezza


【解决方案1】:

这是因为需要安装REPLACE 功能(默认情况下不安装)。还有另一个名为TRANSLATE 的函数可以以有限的方式使用,而不是REPLACE,但不幸的是不适合您的情况。

您可以改用以下查询:

SELECT SUBSTRING(x, 1, INSTR(x, '\') - 1) || '\\\\' || SUBSTRING(x, INSTR(x, '\') + LENGTH('\')) FROM 
(SELECT 'replaces\tring' AS x) t
  • \ 传递给INSTRLENGTH 是要替换的字符串。请注意,它们出现在三个位置。
  • 中间的\\\\ 是替换字符串。
  • replaces\tring 是要搜索的字符串。

查看以下示例,在 I love Netezza 中将 love 替换为 like

SELECT SUBSTRING(x, 1, INSTR(x, 'love') - 1) || 'like' || SUBSTRING(x, INSTR(x, 'love') + LENGTH('love')) FROM 
(SELECT 'I love Netezza' AS x) t

【讨论】:

    【解决方案2】:

    该特定功能是“SQL 扩展工具包”的一部分,在我们的系统上,它位于 SQLEXT 数据库的 ADMIN 模式中。所有用户都被授予对该模式的执行访问权限。此外,database.schema 已放置在路径中(DBA 全局执行此操作,但如果需要,您可以在会话中发出“set PATH=...”)

    我们的路径是:

    select current_path;
    
    CURRENT_PATH
    ---------------------------------------------------------------------------------------
    SQLEXT.ADMIN,INZA.INZA,NZA.INZA,NZM.INZA,NZMSG.INZA,NZR.INZA,NZRC.INZA,SYNCHDB.ADMIN
    

    如您所见,SQLEXT 位于开头...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-27
      • 2013-05-17
      • 2012-04-07
      • 2010-10-07
      • 2015-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多