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 - 如何用条件替换两个逗号之间的字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何用数字中的点替换逗号(或任何替换)[重复]

如何用第二列值替换星号

我是 DMBS 系统的新手,是不是可以加入两个数据库系统,如 SQL 和 Netezza?

sql 中如何用别名作为查询条件

如何用sql语句把查询后的结果那一列数据全部替换。

已经建立了两个表,请问如何用SQL语句建立关联?