如何修改表SQL中列中的值
Posted
技术标签:
【中文标题】如何修改表SQL中列中的值【英文标题】:how to modify a value in a comumn in a table SQL 【发布时间】:2020-09-18 10:10:46 【问题描述】:我在一个数据库中有一个表 MYTABLE,它有几列。
给定列 DOGCOLORS 在所有行中都有多个值:
1:黄红绿 2:红紫绿 3:黑绿灰
我正在尝试查找一个查询,该查询在表 MYTABLE 中的 DOGCOLORS 列的每个值中将值“green”更新为“orange”
BEGIN TRANSACTION;
UPDATE MYTABLE
SET DOGCOLORS=REPLACE(DOGCOLORS,'red','orange');
COMMIT TRANSACTION;
结果应该是这样的:
1: 黄色红色橙色 2:红紫橙 3:黑橙灰
在 DBeaver 上运行的查询给出了这些错误: PL/SQL:ORA-02185:除了 WORK 之外的令牌遵循 COMMIT 在预期以下情况之一时遇到符号“文件结尾”:
;
任何帮助表示赞赏
【问题讨论】:
您正在阅读错误的手册。 Oracle SQL 参考指南是here。不过,我不知道你在哪里找到BEGIN TRANSACTION
。这是什么意思?
【参考方案1】:
只需将COMMIT TRANSACTION;
替换为COMMIT;
。
你也不需要'BEGIN TRANSACTION;'它会自动启动
【讨论】:
【参考方案2】:要在普通 SQL 中用值“橙色”更新每个子字符串“绿色”,请使用此查询
update MYTABLE
set dogcolors = replace(dogcolors,'green','orange')
where dogcolors like '%green%'
;
commit;
要调用匿名 PL/SQL 块,请使用
BEGIN
update MYTABLE
set dogcolors = replace(dogcolors,'green','orange2')
where dogcolors like '%green%'
;
commit;
END;
/
注意一个好的做法是限制更新的行并排除将被更新为相同值的行 - 请参阅 UPDATE 语句中的 WHERE 谓词。
提交事务你通常只使用commit;
,但如果你需要它有点更详细这也是legal syntax(虽然很少使用):
commit work comment 'transaction';
【讨论】:
以上是关于如何修改表SQL中列中的值的主要内容,如果未能解决你的问题,请参考以下文章