我正在尝试替换Netezza列中的转义字符,但它没有正确替换。 请帮我一点。
select replace('replaces\tring','\','\\\\');
我需要输出replaces\\\\tring
。以下是我收到的错误消息......
错误[42S02]错误:函数'REPLACE(UNKNOWN,UNKNOWN,UNKNOWN)' 不存在无法识别满足给定的函数 参数类型您可能需要添加显式类型转换
提前致谢。
答案 0 :(得分:1)
这是因为需要安装REPLACE
函数(默认情况下不是这样)。还有一个名为TRANSLATE
的函数,可以有限的方式使用而不是REPLACE
,但遗憾的是它不适合你的情况。
您可以改用以下查询:
SELECT SUBSTRING(x, 1, INSTR(x, '\') - 1) || '\\\\' || SUBSTRING(x, INSTR(x, '\') + LENGTH('\')) FROM
(SELECT 'replaces\tring' AS x) t
\
传递给INSTR
,LENGTH
是要替换的字符串。请注意,它们出现在三个位置。\\\\
是替换字符串。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就在开始......