ORACLE验证字段值是否为数字
2013-11-11 11:54
134 查看
--创建测试表 DROP TABLE TEST_TO_NUMBER; CREATE TABLE TEST_TO_NUMBER ( ID VARCHAR2(2) PRIMARY KEY, TEST_VAL VARCHAR2(20) NOT NULL );
--插入测试数据 INSERT INTO TEST_TO_NUMBER (ID, TEST_VAL) VALUES ('1','123'); INSERT INTO TEST_TO_NUMBER (ID, TEST_VAL) VALUES ('2','0.12'); INSERT INTO TEST_TO_NUMBER (ID, TEST_VAL) VALUES ('3','2.141'); INSERT INTO TEST_TO_NUMBER (ID, TEST_VAL) VALUES ('4','.0.1'); INSERT INTO TEST_TO_NUMBER (ID, TEST_VAL) VALUES ('5','a.213'); INSERT INTO TEST_TO_NUMBER (ID, TEST_VAL) VALUES ('6','1..2'); INSERT INTO TEST_TO_NUMBER (ID, TEST_VAL) VALUES ('7','1a1');
--创建验证方法 CREATE OR REPLACE FUNCTION IS_NUMBER (IN_DATA IN VARCHAR2, --原始数据 I IN NUMBER, --整数位数最大允许值 J IN NUMBER --小数位数最大允许值 0-不能有小数位 ,-1 不校验小数长度 ) RETURN INTEGER AS V_NUMBER NUMBER; V_XIAOSHU VARCHAR2 (128); --数据类型校验 返回1 :正确 返回0: 错误 BEGIN IF (INSTR (IN_DATA, ',', 1, 1) <> 0) THEN RETURN 0; END IF; IF J = -1 THEN V_XIAOSHU := '9999999999999999999999999999'; ELSIF J = 0 THEN V_XIAOSHU := '0'; ELSE V_XIAOSHU := TRIM (LPAD (' ', J + 1, '9')); END IF; V_NUMBER := TO_NUMBER (IN_DATA, TRIM (LPAD (' ', I + 1, '9')) || '.' || V_XIAOSHU); --利用类型转换异常判断是否合法 RETURN 1; EXCEPTION WHEN OTHERS THEN RETURN 0; END IS_NUMBER;
--查询不是数字的字段 SELECT * FROM (SELECT ID,IS_NUMBER(TEST_VAL,20,20) A FROM TEST_TO_NUMBER) WHERE A = '0';
相关文章推荐
- oracle 判断字段是否为是数字 regexp_like用法
- oracle 判断字段是否为是数字等 regexp_like用法 正则表达式
- Oracle中判断字段是否为数字(能转化为正整数)
- Oracle中判断字段是否为数字
- js验证输入字段是否含有字母数字function checkChar(ic) { if (ic >= 48 && ic <= 57) { return 1; } if ((i
- Oracle中判断字段是否为数字
- 在oracle中判断某个字段的值是否为数字
- oracle 判断字段是否为是数字 regexp_like用法 正则表达式
- httpclient如何验证响应字段值是否为数字
- oracle 判断字段是否为是数字 regexp_like用法 正则表达式
- 验证年龄字段是否为数字
- oracle 10g 用正则表达式判断字段的值是否为数字
- Oracle sql判断一个字段是否全数字 或含有中文
- 验证文字字段输入的是否是数字或英言文字母
- SQL Server中检查字段的值是否为数字的方法
- 【Oracle】ORA-01722:无效数字(控制文件最后一个字段)
- sql server ,mysql ,oracle 自增长字段设置以及自增长属性的修改验证
- [工作日志] 验证字符串是否数字
- Oracle - EBS: SQL&PL/SQL 如何根据flag参数决定是否按照某些字段group分组
- ORACLE写一函数,准确地判断字段是否含有汉字或者提取汉字等