Postgresql
如何將值連接到通過 sql 中的查詢檢索到的數組?
我有一個名為“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';