gpt4 book ai didi

sql - 如何在postgres中提取第一个和剩余的单词

转载 作者:行者123 更新时间:2023-11-29 12:54:54 24 4
gpt4 key购买 nike

Postgres 数据库表在 char(20) 列中包含由空格分隔的单词。select 语句的结果应该是包含两列的表。

第一列应该包含第一个词。第二列应包含剩余的单词。例如

create temp table test (name char(20)) on commit drop ;
insert into test values
('word11 word12 word13'),
('word21'),
('word31 word32');

SELECT
? as firstword,
? as remainingwords
from test;

应该产生

firstword     remainingwords
word11 word12 word13
word21
word31 word32

什么表达式可以代替?标志来产生这个。可以使用一些正则表达式或其他解决方案吗?

使用 PostgreSQL 9.1.2

最佳答案

将值转换为数组并使用它:

select (string_to_array(t, ' '))[1] as first_word,
(string_to_array(t, ' '))[2:99]
from test;

数组比字符串更易于使用,尤其是当您在一行中包含列表时。但是,如果您喜欢使用 array_to_string(),您可以转换回字符串。

在你的 Postgres 版本中,更准确的写法是:

select (string_to_array(t, ' '))[1] as first_word,
(string_to_array(t, ' '))[2:cardinality( string_to_array(t, ' ') )]
from test;

在 Postgres 9.6 中,支持这种简写形式:

select (string_to_array(t, ' '))[1] as first_word,
(string_to_array(t, ' '))[2:]
from test;

关于sql - 如何在postgres中提取第一个和剩余的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45785188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com