oracle怎么判断纯数字,Oracle判断是否为数字型(金额型)

在oracle中没有这样的方法,要实现判断是否为数字型需要自己写一个方法来实现。但也可以用其它方法:

在sql server,校验数据是否为数字型比较容易,有提供的方法可以使用:

ISNUMERIC

当是数字型,方法返回值为1;否则返回值为0

例:

select * from tablename where isnumeric(data) = 1

在Oracle中没有这样的方法,要实现判断是否为数字型需要自己写一个方法来实现。但也可以用其它方法:

方法一,用正则的方法:

使用 regexp_like

例:

select * from tablename where

regexp_like(trim(data),'^([\-]?[0-9]+\.[0-9]+)$|^([\-]?[0-9])+$|^([\-]?[0-9]{1}\.[0-9]+E[\-]?[0-9])+$')

这个正则分三部分:

1、^([\-]?[0-9]+\.[0-9]+)$

浮点型,包括带小数点的情况

2、^([\-]?[0-9])+$

整数型

3、^([\-]?[0-9]{1}\.[0-9]+E[\-]?[0-9])+$

科学计数法表示的数字

以上三部分均包括了负数的情况

注:regexp_like适用于oracle 10g及其之后的版本,之前的不适用。

方法二,用正则的方法:

使用translate方法

例:

select data,decode(trim(translate(trim(cdata),'0123456789.',' ')),'','is number','not number')

from tablename

但上面这个还不太完善,没有考虑负数,科学计数法表示,数据本身为空,,或对“.”的验证。

所以使用方法二的时候要注意,或修改之(写得比较完善有点麻烦,不如写个方法了)。

logo.gif 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Oracle 中可以使用 TO_CHAR 函数将时间转换为字符串,然后通过字符串的方式来判断上午还是下午。 例如,假设有一个日期时间字段为 `my_datetime`,则可以使用以下语句来获得时间的字符串表示: ``` SELECT TO_CHAR(my_datetime, 'HH24:MI:SS') AS my_time FROM my_table ``` 其中,`HH24` 表示小时数的 24 小时制表示,`MI` 表示分钟数,`SS` 表示秒数。通过这种方式,可以得到类似于 `09:30:00` 的时间字符串。 接下来,可以使用以下语句来判断上午还是下午: ``` SELECT CASE WHEN TO_CHAR(my_datetime, 'HH24') < '12' THEN '上午' ELSE '下午' END AS my_period FROM my_table ``` 这里使用了 `CASE` 语句来根据小时数判断上午还是下午,如果小时数小于 12,则为上午,否则为下午。最终结果的格式类似于 `上午` 或者 `下午`。 ### 回答2: Oracle数据库中,可以通过以下方法判断当前时间是上午还是下午。 首先,我们可以使用内置函数`SYSDATE`来获取当前的系统日期和时间。该函数返回一个日期值。然后,通过使用内置函数`TO_CHAR`,将日期值转换为字符串格式。 下面是一个简单的示例代码: ```sql SELECT TO_CHAR(SYSDATE, 'HH24:MI:SS') AS CURRENT_TIME, CASE WHEN TO_CHAR(SYSDATE, 'HH24') >= '12' THEN '下午' ELSE '上午' END AS TIME_PERIOD FROM DUAL; ``` 以上代码中,`TO_CHAR(SYSDATE, 'HH24:MI:SS')`将返回当前时间的小时、分钟和秒。然后,我们使用`CASE`语句进行判断:当当前时间的小时数大于等于12时,表示下午;否则,表示上午。 执行以上代码后,将返回一个包含当前时间和时间段(上午/下午)的结果集。 注意:以上代码中,我们使用了`DUAL`表,它是Oracle数据库中的一个伪表,用于获取类似于变量的值。`DUAL`表只包含一行和一列。 总之,通过使用`SYSDATE`、`TO_CHAR`和`CASE`语句,可以方便地在Oracle判断当前时间是上午还是下午。 ### 回答3: Oracle数据库中可以使用SYSDATE函数来获取当前的系统时间。而在24小时制的时间系统中,上午时间一般是从00:00:00到11:59:59,下午时间一般是从12:00:00到23:59:59。 为了判断当前的时间是上午还是下午,可以使用EXTRACT函数从SYSDATE中提取当前的小时数。具体的SQL查询语句可以如下所示: ```sql SELECT CASE WHEN TO_NUMBER(TO_CHAR(SYSDATE, 'HH24')) < 12 THEN '上午' ELSE '下午' END AS 判断时间 FROM DUAL; ``` 上述查询语句中,将SYSDATE通过TO_CHAR函数转换为字符格式,然后使用TO_NUMBER函数将截取到的小时数转换为数字格式。接着使用CASE语句进行判断,当小时数小于12时,返回"上午",否则返回"下午"。 通过执行以上的查询语句,即可在Oracle数据库中判断当前是上午还是下午。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值