Sql 更改是否永久保留以供替换?

Sql 更改是否永久保留以供替换?,sql,oracle,Sql,Oracle,有谁能告诉我Oracle的替换功能和翻译功能的区别吗 我在某个地方读到,replace使数据库中的更改永久化,而translate则不这样做,对吗 任何一个函数都不能显示将证明replace在数据库中永久更改的查询吗?这两个函数都不会进行永久更改--只有在使用更新时,并且在提交事务后,才会进行“永久”更改。。。直到在该列上运行下一个update语句;) 这两种功能的操作方式不同: SELECT translate('1tech23', '123', '456') AS translate,

有谁能告诉我Oracle的替换功能和翻译功能的区别吗

我在某个地方读到,replace使数据库中的更改永久化,而translate则不这样做,对吗


任何一个函数都不能显示将证明replace在数据库中永久更改的查询吗?

这两个函数都不会进行永久更改--只有在使用
更新时,并且在提交事务后,才会进行“永久”更改。。。直到在该列上运行下一个update语句;)

这两种功能的操作方式不同:

SELECT translate('1tech23', '123', '456') AS translate,
       replace('1tech23', '123', '456') AS replace
  FROM DUAL
…返回:

translate  replace
-------------------
4tech56    1tech23

替换提供的模式;迭代字符串以一次处理替换字符(从左向右移动)

替换和转换之间的差异:

  • 替换用一个字符串替换另一个字符串。
  • TRANSLATE用一组中的字符替换另一组中的字符
  • 转换或替换都不会更新数据库
以下是一些例子:

create table nada (id number(8), description nvarchar2(30));
insert into nada values (1, "I like peanuts.");
insert into nada values (2, 'Peanuts are not a nut.');
insert into nada values (3, 'peanuts are a legume.');
commit;
select * from nada;
给出:

replace(description,'peanuts','tomatoes') -------------------------------------- I like tomatoes. Peanuts are not a nut. tomatoes are a legume. 这张表仍然是一样的:

Id Description -- ------------------------ 1 I like peanuts. 2 Peanuts are not a nut. 3 peanuts are a legume. 现在它变了:

select * from nada;
Id描述 -- ------------------------ 我喜欢西红柿。 花生不是坚果。 西红柿是一种豆类。
现在,如果你也想修复“花生”,你可以使用REGEXP\u REPLACE。

小马:如果你看下面的URL,它说REPLACE改变了数据库&这就是为什么我感到困惑的原因……你能确认哪一个是真的吗<代码>http://www.geekinterview.com/question_details/25173#.ThE57GGQpvk
@Mike:“gomathi.e”的答案不正确;其余的答案和我的答案一样。如果将update语句与translate子句一起使用,会发生什么。它还会更新记录吗?你能给我举个例子吗?我假设当你使用translate with update命令时,会对数据库进行更新。如果我错了,请纠正我。
select translate(description, ' .', '_!') from nada;
translate(description, ' .', '_!') ---------------------------------- I_like_peanuts! Peanuts_are_not_a_nut! peanuts_are_a_legume!
select replace(description, 'peanuts', 'tomatoes') from nada;
select * from nada;
Id Description -- ------------------------ 1 I like peanuts. 2 Peanuts are not a nut. 3 peanuts are a legume.
update nada set description = replace(description, 'peanuts', 'tomatoes');
commit;
select * from nada;
Id Description -- ------------------------ 1 I like tomatoes. 2 Peanuts are not a nut. 3 tomatoes are a legume.