sql 判断是否为数字

 我来答
匿名用户
2013-03-18
展开全部
不知道你是什么数据库啊。
以后你要询问有关数据库函数的问题, 最好明确说明一下啊。

Oracle 通过正则表达式判断, 字符串是否是数字。

可以使用正则表达式的方式来判断。
REGEXP_LIKE( 字段 , '(^[+-]?\d{0,}\.?\d{0,}$)'
来判断 是否是数字

SQL> SELECT NULL
2 FROM dual
3 WHERE REGEXP_LIKE(NULL,'(^[+-]?\d{0,}\.?\d{0,}$)');

未选定行

SQL>
SQL> SELECT 'Abc'
2 FROM dual
3 WHERE REGEXP_LIKE('Abc','(^[+-]?\d{0,}\.?\d{0,}$)');

未选定行

SQL>
SQL> SELECT '100'
2 FROM dual
3 WHERE REGEXP_LIKE('100','(^[+-]?\d{0,}\.?\d{0,}$)');

'10
---
100

SQL>
SQL> SELECT '-100'
2 FROM dual
3 WHERE REGEXP_LIKE('-100','(^[+-]?\d{0,}\.?\d{0,}$)');

'-10
----
-100

SQL>
SQL> SELECT '.01'
2 FROM dual
3 WHERE REGEXP_LIKE('.01','(^[+-]?\d{0,}\.?\d{0,}$)');

'.0
---
.01

SQL>
SQL> SELECT '1995-10-1'
2 FROM dual
3 WHERE REGEXP_LIKE('1995-10-1','(^[+-]?\d{0,}\.?\d{0,}$)');

未选定行

SQL>
SQL> SELECT '1/20/95'
2 FROM dual
3 WHERE REGEXP_LIKE('1/20/95','(^[+-]?\d{0,}\.?\d{0,}$)');

未选定行

SQL Server 有一个 ISNUMERIC 函数, 用于判断。

1> SELECT 'NULL' AS [DATA], ISNUMERIC(NULL) AS [ISNUMERIC]
2> UNION ALL
3> SELECT 'ABC' AS [DATA], ISNUMERIC('Abc') AS [ISNUMERIC]
4> UNION ALL
5> SELECT '100' AS [DATA], ISNUMERIC('100') AS [ISNUMERIC]
6> UNION ALL
7> SELECT '-100' AS [DATA], ISNUMERIC('-100') AS [ISNUMERIC]
8> UNION ALL
9> SELECT '.01' AS [DATA], ISNUMERIC('.01') AS [ISNUMERIC]
10> UNION ALL
11> SELECT '1995-10-1' AS [DATA], ISNUMERIC('1995-10-1') AS [ISNUMERI
C]
12> UNION ALL
13> SELECT '1/20/95' AS [DATA], ISNUMERIC('1/20/95') AS [ISNUMERIC]
14> UNION ALL
15> SELECT '1995-10-1 13:00' AS [DATA], ISNUMERIC('1995-10-1 13:00') A
S [ISNUMERIC]
16>
17> go
DATA ISNUMERIC
--------------- -----------
NULL 0
ABC 0
100 1
-100 1
.01 1
1995-10-1 0
1/20/95 0
1995-10-1 13:00 0

(8 行受影响)
踢馆NB人物
推荐于2018-02-27 · TA获得超过327个赞
知道答主
回答量:125
采纳率:100%
帮助的人:76.8万
展开全部
select ISNUMERIC(字段名) from 表名
或者
select ISNUMERIC(字符串)

返回1就是数字,返回0就不是数字
来自:求助得到的回答
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2019-12-06 · TA获得超过8316个赞
知道大有可为答主
回答量:1.8万
采纳率:92%
帮助的人:698万
展开全部
不知道你是什么数据库啊。
以后你要询问有关数据库函数的问题, 最好明确说明一下啊。

Oracle 通过正则表达式判断, 字符串是否是数字。

可以使用正则表达式的方式来判断。
REGEXP_LIKE( 字段 , '(^[+-]?\d{0,}\.?\d{0,}$)'
来判断 是否是数字
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
好官雪0M
2016-11-15
知道答主
回答量:17
采纳率:0%
帮助的人:4.4万
展开全部
甩个正则表达式,求指导
select case when regexp_like('+11.22','(^([0-9]?|\+|\-)(([0-9]*\.?[0-9]*[0-9]$)|([0-9]+\.$)))|(^\.[0-9]*[0-9]$)') then 1 else 0 end from dual
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式