我有像'keepme:cutme'或'string-without-separator'这样的字符串,它们应分别成为'keepme'和'string-without-separator'。这可以在PostgreSQL中完成吗?我试过了:
select substring('first:last' from '.+:')
但是如果字符串中没有:
,则会留下:
并且无效。
答案 0 :(得分:17)
使用split_part()
:
SELECT split_part('first:last', ':', 1) AS first_part
如果分隔符不存在,则返回整个字符串。获得第二或第三部分等很简单。
比使用正则表达式匹配的函数快得多。由于我们有一个固定的分隔符,我们不需要正则表达式的魔力。
相关:
答案 1 :(得分:1)
regexp_replace()可能会超出您的需要,但它也提供了 regex 的额外好处。例如,如果字符串使用多个分隔符。
使用示例:
select regexp_replace( 'first:last', E':.*', '');
答案 2 :(得分:-1)
SQL选择在最后一次出现字符后选择所有内容
select right('first:last', charindex(':', reverse('first:last')) - 1)