postgresql中的字符串匹配模式

时间:2015-12-20 08:57:07

标签: postgresql

我有一个long_name列。我需要为这个专栏取名。短名称由" _"之后的第一个字符组成。长名。

例如: long_name:' _Michael_Smith'应该导致MS'简称 long_name:' _Michael_John_Smith'应该导致MJS' SHORT_NAME

我可以使用以下第一个角色: substring(long_name from position(' _' in long_name)+1 for for 1)as short_name。

如何在查询中获取其余字符?

1 个答案:

答案 0 :(得分:1)

使用regexp_replace()

with example(long_name) as (
    values
        ('_Michael_Smith'),
        ('_Michael_John_Smith') 
    )
select 
    long_name, 
    regexp_replace(long_name, '_(.)[^_]+', '\1', 'g') short_name
from example;

      long_name      | short_name 
---------------------+------------
 _Michael_Smith      | MS
 _Michael_John_Smith | MJS
(2 rows)

阅读:POSIX Regular Expressions