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

Eli*_*elo 5 sql postgresql

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

\n

我使用了以下查询:

\n
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\xc3\xb3n';\n
Run Code Online (Sandbox Code Playgroud)\n

但它给了我所有的东西,而不仅仅是第一个空格之前的第一个单词。

\n

我怎样才能得到以下结果

\n
    \n
  1. 约翰
  2. \n
  3. 埃琳娜
  4. \n
  5. 玛丽亚
  6. \n
  7. 马库斯
  8. \n
  9. 马里奥
  10. \n
  11. 安娜
  12. \n
  13. 佩德罗
  14. \n
\n

ETC。

\n

Jim*_*nes 5

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

\n
SELECT split_part(\'CARMEN SANDIEGO\',\' \',1);\n\n split_part \n------------\n CARMEN\n
Run Code Online (Sandbox Code Playgroud)\n

所以在你的情况下应该是这样的

\n
SELECT \n  upper(\n   split_part(\n    trim(substring(descripcion,28)),\' \',1))\nFROM evento\nWHERE descripcion ~ \'Act. datos:Actualizaci\xc3\xb3n\';\n
Run Code Online (Sandbox Code Playgroud)\n

演示:db<>fiddle

\n