如何在Netezza列中替换转义字符

时间:2017-06-02 14:48:38

标签: netezza

我正在尝试替换Netezza列中的转义字符,但它没有正确替换。 请帮我一点。

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

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

  

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

提前致谢。

2 个答案:

答案 0 :(得分: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是要搜索的字符串。

检查以下示例,将替换为喜欢 我喜欢Netezza

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

答案 1 :(得分:0)

该特定函数是“SQL Extensions工具包”的一部分,在我们的系统中,它放在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就在开始......