【问题标题】:Netezza SQL - How to replace string between two Comma's, with a conditionNetezza SQL - 如何用条件替换两个逗号之间的字符串
【发布时间】: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,"

非常感谢您的帮助。

一个

【问题讨论】:

    标签: sql netezza


    【解决方案1】:

    我会使用sql extensions toolkitregexp_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 删除第一个逗号(如果有的话)。
    • 我建议最好的办法是在找不到时添加一个。这样你就有了一个数组,其中每个元素总是以逗号开头。
    • 是的,两者都有道理。感谢您的帮助!
    猜你喜欢
    • 2017-12-28
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多