需求:如果字段值不是数字或者数字型字符串,把该字段值update成"" 1.函数法(不能批量,舍弃):
[sql] - create or replace function isNumber(p_in varchar2) return boolean as
- i number;
- begin
- i:=to_number(p_in);
- return true;
- exception
- when others then
- return false;
- end ;
但是这个好像只能一个个判断,不能批量。2.
[sql] - SQL> select nvl2(translate("333", "1234567890 ", ""), "is characters ", "is number ") from dual;
-
- NVL2(TRANSLATE("333","1234567
- ------------------------------
- is number
-
- SQL> select nvl2(translate(333, "1234567890 ", ""), "is characters", "is number") from dual;
-
- NVL2(TRANSLATE(333,"123456789
- ------------------------------
- is number
-
- SQL> select nvl2(translate("aaaaa", "1234567890 ", ""), "is characters", "is number") from dual;
-
- NVL2(TRANSLATE("AAAAA","12345
- ------------------------------
- is characters
-
- SQL>
3.据说要批量,可以这样先查出来,没有试过:
[sql] - select decode(nvl2(translate(column, "1234567890 ", ""), "0", "1") ,"1",column,"") from dual;
我写的:
[sql] - Update T_87_Mtbuf Set SpCode="" Where nvl2(translate(SpCode, "1234567890 ", ""), "is characters", "is number ")="is characters";
补充一点:to_number(...)中只能接受数字如122或数字型字符串"122",接受"aaa"会报错“无效字符”。Oracle热备份只读表空间Oracle存储过程循环插入10000条数据相关资讯 Oracle基础教程
- Oracle块编程返回结果集详解 (11/10/2013 10:45:58)
- Oracle基础教程之设置系统全局区 (08/22/2013 14:24:00)
- Oracle基础教程知识点总结 (06/18/2013 07:43:32)
| - Oracle基础教程之tkprof程序详解 (10/22/2013 11:49:50)
- Oracle基础教程之sqlplus汉字乱码 (07/18/2013 16:30:00)
- Oracle 管理之 Linux 网络基础 (02/16/2013 18:37:35)
|
本文评论 查看全部评论 (0)