【问题标题】:SQL - Remove double semicolons at the end of fieldSQL - 删除字段末尾的双分号
【发布时间】:2017-09-22 15:12:53
【问题描述】:

我们正在使用 Amazon-Redshift(符合 PostgreSQL 的语法),我们在表中有以下字符串

"TOTO;"
"TOTO;;"
"TOTO;;;"
"TOTO;;;;"

我想 'rtrim' 双分号。所以我想拥有

"TOTO;"
"TOTO"
"TOTO;"
"TOTO"

怎么做?

【问题讨论】:

标签: sql regex string amazon-redshift character-trimming


【解决方案1】:

regexp_replace 函数与(;;)*$ 正则表达式(任意数量的;; 后跟行尾)一起使用:

SELECT regexp_replace(';;test;;;', '(;;)*$'), regexp_replace(';;test;;;;', '(;;)*$');
┌────────────────┬────────────────┐
│ regexp_replace │ regexp_replace │
├────────────────┼────────────────┤
│ ;;test;        │ ;;test         │
└────────────────┴────────────────┘
(1 row)

【讨论】:

    【解决方案2】:
    select replace('TODO;;;',';;','')
    

    如果我做了一个错误的假设,请发表评论,我会重新调整我的答案。

    【讨论】:

    • 这将删除所有出现的;;,而不仅仅是尾随的。
    • @Marth - 我的错! regexp_replace 是解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    相关资源
    最近更新 更多