将第一个单词提取到第一个空格-POSTGRES



我只想提取第一个单词到第一个空格。

我使用了以下查询:

select upper(substring(substring(descripcion,28),0,length(substring(descripcion,28))-position(' ' in reverse(substring(descripcion,28)))+1)) from evento where descripcion ~ 'Act. datos:Actualización';

但它给了我一切,不仅仅是第一个空格前的第一个单词。

我如何获得以下结果

  1. 约翰
  2. Elena
  3. 玛丽亚
  4. Marcus
  5. 马里奥
  6. 安娜
  7. 佩德罗

等。

使用带空格的split_part作为分隔符来获取第一个字符串,例如

SELECT split_part('CARMEN SANDIEGO',' ',1);
split_part 
------------
CARMEN

所以在你的情况下,它应该是类似的东西

SELECT 
upper(
split_part(
trim(substring(descripcion,28)),' ',1))
FROM evento
WHERE descripcion ~ 'Act. datos:Actualización';

演示:db<>fiddle

使用regexp_replace:

select upper(regexp_replace(
descripcion,
'^Act. datos:Actualización de ([a-z]+).+$', 
'1'))
from evento 
where descripcion ~ '^Act. datos:Actualización de ([a-z]+).+$'; 

请。请注意,为了更简单,用于过滤和文本提取的regex是相同的。我已经修复了你的一点,并添加了一个捕获组。

相关内容

  • 没有找到相关文章

最新更新