postgresql 将字符串插入text []列

62o28rlo  于 2022-12-12  发布在  PostgreSQL
关注(0)|答案(3)|浏览(412)

我有以下问题。
1.我将从webservice接收文本形式的输入,并将其插入到某个psql表中。
创建表测试(id序列,myvalues文本[])
接收到的输入将是:insert into test(myvalues) values ('this,is,an,array');
1.我想在插入之前创建一个触发器,以便能够将此字符串转换为text []并插入它
我想到的第一个想法是在插入之前创建触发器

create function test_convert() returns trigger as $BODY%
 BEGIN
   new.myvalues = string_to_array(new.myvalues,',')
   RETURNS NEW
 END; $BODY$ language plpgsql

但这不起作用

fnx2tebb

fnx2tebb1#

可以使用string_to_array函数将字符串转换为插入查询中得字符串数组:

INSERT INTO test ( myvalues )
VALUES ( string_to_array( 'this,is,an,array', ',' ) );
uubf1zoe

uubf1zoe2#

假设您收到this is an array的文本,并且您想将其转换为this,is,an,array,那么您可以使用string_to_array('this is an array', ' '),它将被转换。但是,如果您收到的是逗号分隔的文本,那么您可以直接使用它。

lnlaulya

lnlaulya3#

创建表模式如下所示,

CREATE TABLE expert (
    id VARCHAR(32) NOT NULL,
    name VARCHAR(36),
    twitter_id VARCHAR(40),
    coin_supported text[],
    start_date TIMESTAMP,
    followers BIGINT,
    PRIMARY KEY (id)
    );

像这样插入值将帮助您插入数组,

insert into expert(id, name, twitter_id, coin_supported, start_date, followers) values('9ed1cdf2-564c-423e-b8e2-137eg', 'dev1', 'dev1@twitter', '{"btc","eth"}', current_timestamp, 12);

相关问题