oracle 去掉字符,剩下数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 去掉字符,剩下数字相关的知识,希望对你有一定的参考价值。

一个字段的值有:字母+汉字+数字+符号,只保留数字有什么函数没有。

实现的方法和详细的操作步骤如下:

1、第一步,新建一个测试表,见下图,转到下面的步骤。

2、第二步,执行完上面的操作之后,将测试数据插入,见下图,转到下面的步骤。

3、第三步,执行完上面的操作之后,查询表中数据,可以发现字段中带“-”字符,见下图,转到下面的步骤。

4、第四步,执行完上面的操作之后,编写sql,把字段中的字符‘-’去掉,代码见下图。这样,就解决了这个问题了。

参考技术A Oracle 正则表达式函数-REGEXP_REPLACE 使用例子
http://hi.baidu.com/wangzhiqing999/blog/item/267c6dfefc700fcdb48f31c0.html

字母+汉字+数字+符号,只保留数字 只保留数字 == 把 字母+汉字+符号 替换为空 ''

替换数字

这个是把 字符串里面的 数字 替换为 'QQQ'
SELECT
REGEXP_REPLACE (a,'[0-9]+','QQQ') AS A
FROM
test_reg_substr;

你只需要稍微修改, 把 非数字的, 替换为 '' 应该就可以了。
SELECT
REGEXP_REPLACE (a, '[^0-9]+', '') AS A
FROM
test_reg_substr;

差不多是这个样子的。本回答被提问者采纳
参考技术B select translate( 字段 , 保留字段||字段 , 保留字段 ) from dual; 参考技术C 正则表达式 regexp_like 这个函数貌似是10G以上才支持追问

怎么只保留数字呢

追答

regexp_like(v_USER_MOBILE,'^1[3|5|8][0-9]\d4,8$') --判断手机号是否合法 这是我知道一个判断手机号的正则表达式,你修改一下应该能用来判断数字,你应该懂正则表达式吧 我有点忘了,你搞一下应该没问题

oracle中字符串的大小比较,字符串与数字的比较和运算

请教
1.oracle中字符串大小是怎么比较的,为什么'gfhfg'<'a','a'>'888'?
2.字符串和数字是怎么比较和运算的?在java中字符和数字的比较是将字符自动转换成数字类型,再比较和运算。oracle中呢?oracle中字符串和数字能比较吗?比如’av’与5怎么比较的?两者相加呢?为什么oracle中比较运算字符串和数字会报错?
请教前辈们,能否详细讲述一下

1、首先在oracle软件中,lower将字符串全部转换为小写。

2、upper将字符串全部转换为大写。

3、initcap将单词首字母转换为大写,其它转换为小写。

4、substr(字符串,3,4)  截取字符串 从指定位置第3个字符  截取4个字符   4不是必选,substr(字符串,-3)-3代表从字符串的右边第三个字符开始截取。

5、最后如果想要查询出第二个o的位置 可以使用instr('字符串','字符',1,2)  1 代表左起  2代表第二次出现的位置,instr 查询出字符所在字符串的位置永远都是左起开始查询。

参考技术A Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个,类推。

字符串和数字进行操作是会报异常的,因为类型不一样不能进行比较。
Oracle在执行SQL的时候有些时候会自动转换,比如:
select * from chan_customer cc where cc.customer_id = '1';
即使customer_id是数字型的也可以查出来,但是Oracle有区分字符和数字
就是通过加不加单引号来区分。本回答被提问者采纳
参考技术B oracle里字符串比较是按ascii码来比较的
你执行这个
select ascii('a'),ascii('888') from dual;

出来结果你就知道啥意思了
参考技术C 简单的说,先比较第一个字符,只要第一个字符ascii大,整个字符串就大了

以上是关于oracle 去掉字符,剩下数字的主要内容,如果未能解决你的问题,请参考以下文章

oracle中字符串的大小比较,字符串与数字的比较和运算

oracle怎么去掉字符串的空格的数据

oracle 中 最后一位数字是1就显示0,是9就进位

c++编程)键盘输入一个高精度的正整数M,去掉其中任意S个数字后使剩下的数最小

算法第四章上机实践报告

60291253去掉三个数字最小的数是?