追加字符在多行中的Oracle SQL字符串
我试图通过将字符串“999”更新多行一列:追加字符在多行中的Oracle SQL字符串
UPDATE integration.ol_orders
SET order_id = ((SELECT order_id
FROM integration.ol_orders
WHERE status = 2) || '999')
WHERE status = 2
,但不管是什么原因,我不断收到“ORA-01427:单行子查询返回多个行提示”的错误。
所以,当我重复我的n行,我试图做的事:
a1 = a1 || '999'
a2 = a2 || '999'
a3 = a3 || '999'
an = an || '999'
任何建议,如何去了解呢?
编辑:改变 '+' 到 '||',仍然没有运气
子查询看起来是不必要的,只是在做这应该工作:
UPDATE integration.ol_orders
SET order_id = order_id || '999'
WHERE status = 2
如果我记得没错Oracle使用||
进行连结。如果它是一个整数,可能有必要将order_id
转换为字符类型,我不确定这一点,并且目前无法对其进行测试。 (转换应该隐含在注释中,否则可以使用TO_CHAR()
来明确地转换它)。
确保虽然运行前有表的备份或复制......
我同意,但确认order_id不是数字很好。当然反英雄989在上面的尝试中确实这样对待它。 – 2015-02-06 18:19:22
Oracle会将'order_id'隐式转换为varchar2以便应用连接。 – Allan 2015-02-06 18:21:03
是的,尽管我不喜欢依赖于隐式投射。 – 2015-02-06 18:22:06
执行您的子查询('选择ORDER_ID FROM integration.ol_orders WHERE状态= 2'),看看有多少行返回。 – mmmmmpie 2015-02-06 18:10:52
@mmmmmpie 14行返回 – antihero989 2015-02-06 18:14:25
Theres你的问题。您正试图设置1行等于14行+'999'的输出。 BTW'+'不是你在oracle中连接它的'||'的方式。 – mmmmmpie 2015-02-06 18:15:39