gpt4 book ai didi

sql - Oracle:通过增加现有值来更新数据行

转载 作者:行者123 更新时间:2023-12-04 16:25:52 25 4
gpt4 key购买 nike

我的数据库(Oracle 11g)中有一个大表,我想在其中更新其中有特定编号的表的列。
我想通过在此列的每个值前面设置prefix来更新它。

示例(SpecificNumber是int和PK,Value1是Varchar2,最后一列也是):

实际数据:

    [SpecificNumber] [Value1] [column2gettingupdated]
[1] 123456789 Test text
[2] 123456789102 sth text2
[3] 12233 text test3

将来的数据(在我的SQL之后):
    [SpecificNumber] [Value1] [column2gettingupdated]
[1] 123456789 Test PREFIX-text
[2] 123456789102 sth PREFIX-text2
[3] 12233 text PREFIX-test3

所以我的想法:
Update table
set column2gettingupdated=("prefix"+
(select column2gettingupdated from table where SpecificNumber = '12233')
)
where SpecificNumber = '12233';

但这给了我一个 ORA-00904: "p": invalid identifier错误。

如果我尝试这样做:
Update table
set column2gettingupdated=("prefix"+
(select column2gettingupdated from table where SpecificNumber = '12233')
)
where SpecificNumber = '12233';

我收到 ORA-01722: invalid number错误。

这有可能吗?已经感谢您的帮助!

最佳答案

所需要做的就是使用串联运算符||。更新语法不要求您具有子查询来获取值12233的column2gettingupdated

另外,对于Oracle VARCHAR2,您可以使用单引号而不是双引号。这导致该语句的语法如下:

UPDATE table
SET column2gettingupdated = 'prefix' || column2gettingupdated
WHERE SpecificNumber = 12233;

这是来自示例架构SCOTT的示例:
SCOTT@dev> CREATE TABLE DEPT2 as (
2 SELECT *
3 FROM DEPT
4 );

Table created.

SCOTT@dev> commit;

Commit complete.

SCOTT@dev> UPDATE DEPT2
2 SET DNAME = 'PRE '|| DNAME
3 WHERE DEPTNO = 20;

1 row updated.

SCOTT@dev> commit;

Commit complete.

SCOTT@dev> SELECT *
2 FROM dept
3 WHERE deptno = 20
4 UNION
5 SELECT *
6 FROM dept2
7 WHERE deptno = 20
8
SCOTT@dev> /

DEPTNO DNAME LOC
========== ============== =============
20 PRE RESEARCH DALLAS
20 RESEARCH DALLAS

关于sql - Oracle:通过增加现有值来更新数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26405864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com