在第一次出现字符后剪切字符串

Cut string after first occurrence of a character

我有像 'keepme:cutme' 或 'string-without-separator' 这样的字符串,它们应该分别变成 'keepme' 和 'string-without-separator'。这可以在 PostgreSQL 中完成吗?我试过了:

select substring('first:last' from '.+:')

但这会留下 :,如果字符串中没有 :,将无法工作。

使用split_part():

SELECT split_part('first:last', ':', 1) AS first_part

Returns 如果分隔符不存在,则整个字符串。而且很容易获得第二或第三部分等

比使用正则表达式匹配的函数快得多。由于我们有一个固定的分隔符,我们不需要正则表达式的魔力。

相关:

  • Split comma separated column data into additional columns

regexp_replace() 可能会超出您的需要,但它也提供了 regex 的额外好处。例如,如果字符串使用多个定界符。

使用示例:

select regexp_replace( 'first:last', E':.*', '');

SQL Select 选择最后一个字符出现后的所有内容

select right('first:last', charindex(':', reverse('first:last')) - 1)