M.T*_*man 1 postgresql array string-manipulation
我有一个名为“mkvtable”的表,它在各个字符串和字符串数组之间建立对应关系:
词| MKV字 ------+----------------- 你好 | {世界,朋友} 再见| {家,永远} 你好| {伙计们,女士们}
根据PostgreSQL 提供的文档,将值附加到值数组应该是使用连接运算符“||”的简单问题。
但是,如果我尝试将字符串 , 添加到与单词 对应的there
字符串数组中,则似乎不会发生任何情况:{fellas,ladies}
hi
SELECT mkvword FROM mkvtable WHERE word = 'hi' || 'there';
Run Code Online (Sandbox Code Playgroud)
PostgresSQL 似乎也说了同样的话:
mkvword
---------
(0 rows)
Run Code Online (Sandbox Code Playgroud)
由于没有抛出任何错误,我认为语法上没有问题。
我究竟做错了什么?我最好的猜测是 psql 感到不安,因为我试图通过使用数组与相邻列中的值的关系来访问数组,但这只是一个未经教育的猜测。也许这种查询与连接运算符不太适合?
TL;DR:如何正确地将值连接到表行中存储的数组?
小智 6
但是,例如,如果我尝试将字符串“there”添加到与单词“hi”相对应的字符串“{fellas,ladies}”数组中,则似乎不会发生任何情况:
您正在将列的值word
与字符串常量进行比较'hithere'
- 您正在连接两个字符串常量,而不是字符串到数组列。
where word = 'hi' || 'there';
Run Code Online (Sandbox Code Playgroud)
是相同的
where word = 'hithere';
Run Code Online (Sandbox Code Playgroud)
听起来你真的想要:
SELECT mkvword || 'there'
FROM mkvtable
WHERE word = 'hi';
Run Code Online (Sandbox Code Playgroud)
如果您想更改存储在表中的值而不仅仅是显示它,则需要更新:
update mkvtable
set mkvword = mkvword || 'there'
where word = 'hi';
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2387 次 |
最近记录: |