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】:可以使用NULLIF
和NVL2
的组合。
如果vw_gdp_currentqry.LOC
是NOT 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语句中,有没有能够将结果集中数字替换成汉字的函数?