oracle排除非数字,oracle字段中找出字段中含有非数字的方法!!!

1.在oracle中字段中找出汉字的方法:可以利用length(testname)和lengthb(testname),其中length(testname)不论数字或者字符都算一个,而lengthb则不同,比如说testname的值为:54看法12,用length(testname)的值为6,而lengthb(testname)的值为:8。利用这个就可以非常清楚的判断一个字符中是否包含汉字了(字母除外)。

例子:

SELECT 'length的值为:' || LENGTH(TESTNAME) || '===>>>lengthb的值为:' || LENGTHB(TESTNAME) AS NAME_LENGTH, TESTNAME FROM OLD_TEST_TABLE

0818b9ca8b590ca3270a3433284dd417.png

以上很清楚的看出length跟lengthb的不同了吧,用这个可以知道某个字段中是不是存在汉字。

2. 可以利用oracle中的正则regexp_like(in_code, '^(-{0,1}+{0,1})[0-9]+(.{0,1}[0-9]+)$')找出某字段中是不是存在非数字。

特殊的是我今天居然遇到了全角的数字,这样的如果在去to_number(filed)的时候就会报错,想把一些全角数字转换成半角的数据,例子如下:

利用oracle的 to_single_byte 这个函数就可以解决问题 比如:

UPDATE ARCHIVES_IN T1

SET T1.IN_CODE = (SELECT TO_SINGLE_BYTE(T2.IN_CODE)

FROM ARCHIVES_IN T2

WHERE T1.IN_ID = T2.IN_ID)

WHERE NOT REGEXP_LIKE(T1.IN_CODE,

'^(-{0,1}+{0,1})[0-9]+(.{0,1}[0-9]+)

但是有个问题,如果这个in_code字段中只有一个全角数字的话,需要手动的去修改一下。如果有其它好办法咱们一起沟通!!!

O(∩_∩)O哈哈~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值