大家好,我是知数堂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)
我会在头条提供相应例子的视频,希望大家关注
头条号