首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres -更改列数据

Postgres -更改列数据
EN

Stack Overflow用户
提问于 2013-03-12 21:23:45
回答 4查看 261关注 0票数 1

有一个问题,在更新表‘佣金’中的一些行。现在我有了像commission_number /123/456这样的bar。我想把它重命名为John/123/456等,从'user‘表中取一个名字

代码语言:javascript
复制
commission                       user
-------------------------        -----------------
commission_number|user_id         username|user_id
-------------------------        -----------------
bar/123/456      | 1               John   | 1
bar/123/123      | 2               Bob    | 2
bar/456/123      | 3               Thomas | 3

下面是我的查询,使用'baz‘。但是不知道如何从'user‘表中放置'username’。我只需要替换'baz',并使用用户名从'user',但不知道如何。

代码语言:javascript
复制
UPDATE commission
SET commission_number = overlay(commission_number placing 'baz' FROM POSITION('bar' IN commission_number) for 3)
WHERE commission_number in (1,2,3,4,5,6,7,8)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-12 21:39:04

我会从实验开始,比如..。

代码语言:javascript
复制
UPDATE commission
SET commission_number = 
  (SELECT UserName FROM User WHERE user.user_id=commission.user_id)
   ||SubString(commission_number,4,8000)

除了前3个字符之外,还有right(commission_number,-3)可以从中获取所有字符。

我不知道你想要做什么

WHERE commission_number in (1,2,3,4,5,6,7,8)

票数 1
EN

Stack Overflow用户

发布于 2013-03-12 21:47:22

代码语言:javascript
复制
update commission 
   set commission_number = u.username || '/' || left(commission_number, -strpos(commission_number, '/'))
from users u
  where u.user_id = commission.user_id
票数 3
EN

Stack Overflow用户

发布于 2013-03-12 21:48:41

这说明了数据在更新后的外观。在处理字符串函数时,我经常使用这种select语句。

代码语言:javascript
复制
select c.commission_number, c.user_id, 
       (select username 
        from "user" 
        where "user".user_id = c.user_id) username,
       overlay(c.commission_number 
               placing (select username 
                        from "user" 
                        where "user".user_id = c.user_id) 
               from 1 for 3)
from commission c;

现在,您可以使用您知道可以工作的术语来编写update语句。

代码语言:javascript
复制
update commission 
set commission_number = overlay(commission_number 
                                placing (select username 
                                         from "user" 
                                         where "user".user_id = commission.user_id) 
                                from 1 for 3);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15362505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档