oracle如何得到某一列不能转换成数字的数据

假如表中有一个字段str是varchar类型,因为人为原因,输入的字符可能包含其他值或者输入的是无效数值,该怎么将这些数据找出来?... 假如表中有一个字段str是varchar类型,因为人为原因,输入的字符可能包含其他值或者输入的是无效数值,该怎么将这些数据找出来? 展开
 我来答
fffffvrr3
2017-05-05
知道答主
回答量:7
采纳率:0%
帮助的人:3.8万
展开全部
oracle中没有现成的方法判断数据是否是数字类型的的,可以通过function来实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

CREATE OR REPLACE FUNCTION isnum (str IN VARCHAR2)
RETURN NUMBER
IS
v_str VARCHAR2 (1000);
BEGIN
IF str IS NULL
THEN
RETURN 0;
ELSE
v_str := TRANSLATE (str, '.0123456789', '.');
IF v_str = '.' OR v_str = '+.' OR v_str = '-.' OR v_str IS NULL
THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END IF;
END isnum;

扩展判断一列的数据类型是不是数值类型:
select * from 表 where not regexp_like(列名,'^[[:digit:]]+$');.
百度网友b7f0452
2021-02-23
知道答主
回答量:1
采纳率:0%
帮助的人:522
展开全部
用 isnumeric(code) 这个函数来判断 ,查 isnumeric(code) = 0 就是不能转的数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式