【发布时间】:2019-03-04 22:01:06
【问题描述】:
鉴于 PostgreSQL 9.6 中的这张表:
CREATE TABLE test_table (
id int PRIMARY KEY
, test_array text[]
);
一行像:
INSERT INTO test_table (id, test_array)
VALUES (1 , '{A,A,A,B,B,B}');
如何删除一个“B”值?
我不能使用:
UPDATE test_table
SET test_array = array_remove(test_array, 'B')
WHERE id = 1;
因为它删除了值“B”的所有个元素。我只是想删除一个元素(比如第一个元素)。
有什么想法吗?
【问题讨论】:
-
看到这个问题来自 DBA SE dba.stackexchange.com/questions/94639/…
-
这是假设我知道字符串的确切索引。我需要一个可以输入字符串的函数,它会找到包含该字符串的第一个索引,然后从数组中删除该索引。
-
您只需将“位置('B'”中的“B”替换为您要替换的字符/字符串。就像您在示例函数中传递“B”)array_remove(test_array , 'B')
标签: sql arrays postgresql sql-update