Postgresql

如何將值連接到通過 sql 中的查詢檢索到的數組?

  • March 4, 2022

我有一個名為“mkvtable”的表,它建立了單個字元串和字元串數組之間的對應關係:

詞 | mkvword
---------+-----------------
你好 | {世界,朋友}
再見 | {家,永遠}
嗨 | {伙計們,女士們}

根據為 PostgreSQL 提供的文件,將值附加到值數組應該是使用連接運算符的簡單問題:“||”。

但是,如果我嘗試將 string 添加到與 word 對應there的字元串數組中,則似乎什麼也沒有發生:{fellas,ladies}``hi

SELECT mkvword FROM mkvtable WHERE word = 'hi' || 'there';

PostgresSQL 似乎說了這麼多:

mkvword
---------
(0 rows)

由於沒有拋出錯誤,我認為語法上沒問題。

我究竟做錯了什麼?我最好的猜測是 psql 對我試圖通過使用它與相鄰列中的值的關係來訪問數組感到不安,但這只是一個沒有受過教育的猜測。也許這種查詢不適合串聯運算符?

TL;DR:如何正確地將值連接到儲存在表行中的數組?

但是,例如,如果我嘗試將字元串 ’there’ 添加到對應於單詞 ‘hi’ 的字元串數組 ‘{fellas,ladies}’ 中,則似乎什麼也沒有發生:

您正在將列的值word與字元串常量進行比較'hithere'- 您正在連接兩個字元串常量,而不是字元串到數組列。

where word = 'hi' || 'there';

是相同的

where word = 'hithere';

聽起來好像你真的想要:

SELECT mkvword || 'there' 
FROM mkvtable 
WHERE word = 'hi';

如果要更改儲存在表中的值而不僅僅是顯示它,則需要更新:

update mkvtable
 set mkvword = mkvword || 'there' 
where word = 'hi';

引用自:https://dba.stackexchange.com/questions/217119