Netezza SQL - 如何用条件替换两个逗号之间的字符串
Posted
技术标签:
【中文标题】Netezza SQL - 如何用条件替换两个逗号之间的字符串【英文标题】:Netezza SQL - How to replace string between two Comma's, with a condition 【发布时间】:2016-01-29 11:58:14 【问题描述】:我有一个字符串,我想在两个逗号之间找到:N
,并将两个逗号之间的数据替换为空白。示例如下。
目前它是手动完成的,将其导出到 excel 中,进行更改并将其导入回数据库。我相信会有更好的方法在编码中完成此操作,而无需导出/导入。
例子:
"This is sting one:Y,this is string Two:X,This is string Three:N,This is string four:N,This is string five:X,"
期望的结果:
"This is sting one:Y,this is string Two:X,This is string five:X,"
非常感谢您的帮助。
一个
【问题讨论】:
【参考方案1】:我会使用sql extensions toolkit 和regexp_replace
。
我发现正则表达式的 nz 实现似乎与我的版本中的 ?
非贪婪修饰符存在一些问题。在这里工作的表达式是,[^(:N)]+:N
。
FORTUNE_DB(ADMIN)=> select * from so;
COL1
--------------------------------------------------------------------------------------------------------------
This is sting one:Y,this is string Two:X,This is string Three:N,This is string four:N,This is string five:X,
FORTUNE_DB(ADMIN)=> select regexp_replace(col1,',[^(:N)]+:N','') from so;
REGEXP_REPLACE
-----------------------------------------------------------------
This is sting one:Y,this is string Two:X,This is string five:X,
【讨论】:
由于您的第一个元素可能有:N
,我可能会在某个时候将该正则表达式更改为(^|,)[^(:N)]+:N
感谢 Jeremytwfortune。我尝试使用 regexp_replace(Offers,'(^|,)[^(:N)]+:N','') 作为 Newoffer 并且它的工作原理只是在开始时留下一个“,”。我想我可以使用 sub str 删除第一个逗号(如果有的话)。
我建议最好的办法是在找不到时添加一个。这样你就有了一个数组,其中每个元素总是以逗号开头。
是的,两者都有道理。感谢您的帮助!以上是关于Netezza SQL - 如何用条件替换两个逗号之间的字符串的主要内容,如果未能解决你的问题,请参考以下文章