从varchar列中提取第一个单词并将其反转

时间:2015-10-07 09:16:15

标签: sql postgresql

我的表格中有以下数据

id nml               
-- ----------------- 
1  Temora sepanil    
2  Human Mixtard     
3  stlliot vergratob 

我需要通过提取列nml中的第一个单词并使用相反的顺序获取其最后3个字符来获得结果

这意味着输出应该像

nml               reverse 
----------------- ------- 
Temora sepanil    aro     
Human Mixtard     nam     
stlliot vergratob toi  

3 个答案:

答案 0 :(得分:0)

使用PostgreSQL的string functions来实现所需的输出

在这种情况下使用split_partrightreverse函数

select reverse(right(split_part('Temora sepanil',' ',1),3)) 

输出:

aro 

所以你可以用以下格式编写你的查询

select nml
      ,reverse(right(split_part(nml,' ',1),3)) "Reverse" 
from tbl

答案 1 :(得分:0)

  1. 使用nml分割regexp_split_to_array(string text, pattern text [, flags text ]),请参阅Postgres Doc了解详情。
  2. 使用reverse(str)(请参阅Postgres Doc)撤消之前拆分的第一个单词。
  3. 使用substr(string, from [, count])(参考Postgres Doc)选择反向测试的前三个字母
  4. 查询

    SELECT 
        nml,
        substr(reverse(regexp_split_to_array(nml, E'\\s+')[0]),3) as reverse
    FROM
        MyTable
    

答案 2 :(得分:0)

您可以使用SUBSTRINGCHARINDEXRIGHTREVERSE功能

这是语法

  REVERSE(RIGHT(SUBSTRING(nml , 1, CHARINDEX(' ', nml) - 1),3))

<强>样品:

  SELECT REVERSE(RIGHT(SUBSTRING(nml , 1, CHARINDEX(' ', nml) - 1),3)) AS 'Reverse' 
  FROM TableNameHere