在Oracle SQL中将字符附加到多行中的字符串

ant*_*989 1 sql database oracle

我正在尝试通过附加字符串'999'来更新多行中的单个列:

UPDATE integration.ol_orders
SET order_id = ((SELECT order_id
             FROM   integration.ol_orders
             WHERE  status = 2) || '999')
WHERE status = 2
Run Code Online (Sandbox Code Playgroud)

但无论出于何种原因,我不断收到错误"ORA-01427:单行子查询返回多行提示".

所以,当我迭代我的n行时,我正在尝试:

a1 = a1 || '999'
a2 = a2 || '999'
a3 = a3 || '999'
an = an || '999'
Run Code Online (Sandbox Code Playgroud)

有什么建议怎么办?

编辑:将'+'更改为'||',仍然没有运气

jpw*_*jpw 5

子查询看起来不必要,只是这样做应该工作:

UPDATE integration.ol_orders 
SET order_id = order_id || '999' 
WHERE status = 2
Run Code Online (Sandbox Code Playgroud)

如果我记得正确的Oracle ||用于连接.order_id如果它是一个整数,可能有必要将其转换为字符类型,我不确定这一点,目前无法测试它.(转换应该是注释中所述的隐式转换,否则您可以使用TO_CHAR()它来显式转换).

确保在运行之前有表的备份或副本...

  • Oracle将隐式地将`order_id`转换为varchar2以应用连接. (2认同)