MySQL 怎样在字符列中分辨出全部是数字的行数

本文介绍了在MySQL 8.0中如何使用with语句来分辨字符列中全由数字组成的行,同时提供了在5.7及5.6版本中的验证方法。适合SQL初学者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好,我是知数堂SQL 优化班老师 网名:骑龟的兔子

root@mysql3308.sock>[test]>WITH t AS
 -> (
 -> SELECT '01012345678' hp
 -> UNION ALL SELECT '010-1234-5678'
 -> UNION ALL SELECT 'abcd'
 -> )select * from t;
+---------------+
| hp            |
+---------------+
| 01012345678   |
| 010-1234-5678 |
| abcd          |
+---------------+
3 rows in set (0.00 sec)

我们在上面的表中 hp列的三行数据表达出哪个行是纯数字组成的,哪些不是

如下:

root@mysql3308.sock>[test]>WITH t AS
 -> (
 -> SELECT '01012345678' hp
 -> UNION ALL SELECT '010-1234-5678'
 -> UNION ALL SELECT 'abcd'
 -> )
 -> SELECT hp
 -> , CASE WHEN hp REGEXP '[^0-9]' THEN 'N' ELSE 'Y' END chk
 -> FROM t
 -> ;
+---------------+-----+
| hp | chk |
+---------------+-----+
| 01012345678 | Y |
| 010-1234-5678 | N |
| abcd | N |
+---------------+-----+
3 rows in set (0.00 sec)

我用的是MySQL8.0开始支持的with语句

如果想在5.7或者5.6中可以使用如下方法验证

root@mysql3308.sock>[test]>SELECT hp
 -> , CASE WHEN hp REGEXP '[^0-9]' THEN 'N' ELSE 'Y' END chk
 -> FROM
 -> (
 -> SELECT '01012345678' hp
 -> UNION ALL SELECT '010-1234-5678'
 -> UNION ALL SELECT 'abcd'
 -> ) t
 -> ;
+---------------+-----+
| hp | chk |
+---------------+-----+
| 01012345678 | Y |
| 010-1234-5678 | N |
| abcd | N |
+---------------+-----+
3 rows in set (0.00 sec)

以上就是今天的内容,虽然对大牛来说是简单,但是对刚入门的还是有所帮助,谢谢大家

谢谢大家~ 欢饮转发

我是知数堂SQL 优化班老师~ ^^

如有关于SQL优化方面疑问和一起交流的请加 并且 @兔子@知数堂SQL优化

高性能MySQL,SQL优化群 有叶金荣,吴炳锡 两位大神坐镇 : 579036588

欢迎加入 知数堂大家庭。

我的微信公众号:SQL开发与优化(sqlturning)

我会在头条提供相应例子的视频,希望大家关注

头条号
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值