oracle sql语句中的替换问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle sql语句中的替换问题相关的知识,希望对你有一定的参考价值。

tab表中,第一行a的值=1,2;第二行a的值=01,02;第三行a的值=3,4;第四行a的值=03,04;此外还有1,2,3等情况。如何做才能把里面的1,2,3等数值替换成01,02,03?即替换完成后,a的值只有01,02,03等字样,没有1,2,3等字样。不知道这么说大家是否明确。

参考技术A 我认为是,试下吧:
UPDATE tab SET a=replace(replace(a,'1','01'),'00','0')
UPDATE tab SET a=replace(replace(a,'2','02'),'00','0')
UPDATE tab SET a=replace(replace(a,'3','03'),'00','0')
UPDATE tab SET a=replace(replace(a,'4','04'),'00','0')
两次替换,里面的替换将1、2、3、4不加区分地加零,而外面的替换将两个零变成一个。本回答被提问者采纳
参考技术B UPDATE tab SET a = TO_CHAR(a, '00'); 参考技术C 直接加个0不就ok 参考技术D 建议举个例子,方便我们帮忙解决 第5个回答  2010-12-21 哥们,你这问题太笼统了,举个例子呗,到底想解决什么问题

oracle sql developer中的IIF语句

【中文标题】oracle sql developer中的IIF语句【英文标题】:IIF statement in oracle sql developer 【发布时间】:2013-07-26 17:52:51 【问题描述】:

有一个我正在尝试转换为 oracle sql dev 的访问查询。似乎我在 IIf(vw_gdp_currentqry.LOC='0300','F','P') AS SRCE 有错误,有人可以帮忙

SELECT
vw_gdp_currentqry.YEAR, 
vw_gdp_currentqry.LOC, 
**IIf(vw_gdp_currentqry.LOC='0300','F','P') AS SRCE,** 
vw_gdp_currentqry.METHOD, 
vw_gdp_currentqry.current_value
FROM vw_gdp_currentqry
WHERE vw_gdp_currentqry.IND)='TOT';

【问题讨论】:

IIF 是访问特定的。您需要将语法转换为目标数据库支持的内容。解码、大小写是执行此操作的两个主要示例。 不仅访问而且 Transact SQL 具有内置函数 IIF。该问题与“通用” sql 区域有关。 【参考方案1】:

试试decode函数

SELECT
vw_gdp_currentqry.YEAR, 
vw_gdp_currentqry.LOC, 
decode (vw_gdp_currentqry.LOC,'0300', 'F', 'P' ) AS SRCE,
vw_gdp_currentqry.METHOD, 
vw_gdp_currentqry.current_value
FROM vw_gdp_currentqry
WHERE vw_gdp_currentqry.IND='TOT';

或使用case 语法

SELECT
vw_gdp_currentqry.YEAR,             
vw_gdp_currentqry.LOC, 
case vw_gdp_currentqry.LOC
  when '0300' then 'F'
  else 'P' 
end AS SRCE,
vw_gdp_currentqry.METHOD, 
vw_gdp_currentqry.current_value
FROM vw_gdp_currentqry
WHERE vw_gdp_currentqry.IND='TOT';

更多信息

Decode Case Case vs Decode

【讨论】:

【参考方案2】:

可以使用NULLIFNVL2 的组合。

如果vw_gdp_currentqry.LOCNOT NULL,则只能使用此组合,在您的情况下是这样:

SELECT
vw_gdp_currentqry.YEAR, 
vw_gdp_currentqry.LOC, 
nvl2(nullif(vw_gdp_currentqry.LOC,'0300'),'P','F'),
vw_gdp_currentqry.METHOD, 
vw_gdp_currentqry.current_value
FROM vw_gdp_currentqry
WHERE vw_gdp_currentqry.IND='TOT';

【讨论】:

以上是关于oracle sql语句中的替换问题的主要内容,如果未能解决你的问题,请参考以下文章

oracle sql语句中,有没有能够将结果集中数字替换成汉字的函数?

Oracle sql语句把字段中的某个字符去掉

oracle中替换字段中指定字符串的语句

获取oracle视图SQL语句的工具

如何避免 Oracle SQL Developer 中的变量替换

如何批量执行sql查找替换?