将 Oracle Regexp_replace 函数转换为 Netezza
Posted
技术标签:
【中文标题】将 Oracle Regexp_replace 函数转换为 Netezza【英文标题】:Convert Oracle Regexp_replace function into Netezza 【发布时间】:2016-12-24 13:59:11 【问题描述】:以下Regexp_replace
需要转换成Netezza语法:
regexp_replace(COLUMN_NAME,'([[:cntrl:]])|(^\t)|(\s+$)',null)
据我了解,
cntrl
替换控制字符
^\t
替换标签
\s+$
替换尾随空格
请帮忙! 还请纠正我对当前正则表达式在 oracle 中的作用的理解。
【问题讨论】:
^\t
仅替换一个制表符(而不是“制表符”),并且仅当它是字符串中的第一个字符时(^
的含义)。这是其他人编写的一些代码,您想翻译成另一种语言吗?如果您不确定它的作用,为什么需要翻译它?
是的!别人写的。我需要它,因为我需要 Netezza 中的确切功能
【参考方案1】:
你几乎是对的。
([[:cntrl:]])|(^\t)|(\s+$)
[:cntrl:]
— 匹配控制字符
\t
— 匹配标签
^\t
在表达式之间 - 将 ^
和制表符匹配在一起
[^\t]
在表达式之间——匹配非制表符
^\t
at start - 匹配前导制表符
\s+$
— 匹配带有尾随空格的文本
实际上,您的表达式将匹配 - 第一个控制字符、前导制表符或尾随空格。
【讨论】:
谢谢!这有帮助。有关 Netezza 转换部分的任何信息? 什么是 Netezza 语法?可以在问题中发布一些示例 此正则表达式替换功能在 netezza 中不起作用!所以我想把它转换成一个函数或一组函数,它们执行与这个相同的替换但在 Netezza 中。例如: oracle: regexp_replace(column,'a','A') netezza: translate(column,'a','A') 您需要安装SQL extensions toolkit。那么函数也是一样的:regexp_replace
.
@Jeremy,谢谢,我已经安装了,但传递给函数的参数似乎工作方式不同。就像我的情况一样,如果我执行问题中最初提到的相同正则表达式,则会返回 NULL 输出以上是关于将 Oracle Regexp_replace 函数转换为 Netezza的主要内容,如果未能解决你的问题,请参考以下文章
oracle 的 regexp_replace 替换 https 不起作用
如何在 edb 中使用相同的 REGEXP_REPLACE(Oracle sql)
oracle 使用 REGEXP_REPLACE 函数替换子字符
Regexp_Replace 在 Oracle 中多次出现具有相同替换次数的字符