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

Sql 将第一个单词提取到第一个空格-POSTGRES,sql,postgresql,Sql,Postgresql,又是我 我有一个返回此结果的查询: select descripcion from evento where descripcion ~ 'Act. datos:Actualización'; 输出=> 我只想将第一个单词提取到第一个空格 我使用了以下查询: select upper(substring(substring(descripcion,28),0,length(substring(descripcion,28))-position(' ' in reverse(substring(

又是我

我有一个返回此结果的查询:

select descripcion from evento where descripcion ~ 'Act. datos:Actualizació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ón';
输出=>

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

**如何得到以下结果

  • 卡门
  • 卡门
  • 卡门
  • 阿尔戈斯
  • 阿尔戈斯
  • 卡门
  • 埃玛斯
  • 等等**

    提前谢谢你

    使用with space作为分隔符来获取第一个字符串,例如

    SELECT split_part('CARMEN DE NEVANTIA',' ',1);
    
     split_part 
    ------------
     CARMEN
    
    所以你的情况应该是

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

    使用regexp\u替换:

    选择上部(regexp\u替换(
    描述,
    “^Act\.datos:Realización de([a-z]+).+$”,
    '\1'))
    从evento
    其中描述“^Act”。datos:Realización de([a-z]+).+$;
    

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

    哇,我想我已经看到了这一切。你永远不会停止学习+1@Daniel谢谢博士后当然有很多窍门;)在这里,我也每天学习一个新的技巧。