zoukankan      html  css  js  c++  java
  • 6.13 判别可作为数值的字符串

    问题:如果数值与字符混合在一起,需要删除那些字符,只返回数字。

    create view v as 
    select concat(
    substr(ename,1,2),
    replace(cast(deptno as char(4)),' ',''),
    substr(ename,3,2)
    ) as mixed
    from emp
    where deptno=10
    union all
    select replace(cast(empno as char(4)),' ','')
    from emp where deptno=20
    union all
    select ename from emp where deptno=30;

    select * from v;

    +--------+
    | mixed  |
    +--------+
    | CL10AR |
    | KI10NG |
    | MI10LL |
    | ALLEN  |
    | WARD   |
    | MARTIN |
    | BLAKE  |
    | TURNER |
    | JAMES  |
    +--------+

    解决方案:

    select cast(group_concat(c order by pos separator '' ) as unsigned) as MIXED1
    from (
    select v.mixed,iter.pos,substr(v.mixed,iter.pos,1) as c
    from v,
    (select id pos from t10)iter
    where iter.pos <=length(v.mixed)
    and ascii(substr(v.mixed,iter.pos,1)) between 48 and 57
    )y 
    group by mixed
    order by 1;

    +--------+
    | MIXED1 |
    +--------+
    |     10 |
    |     10 |
    |     10 |
    +--------+

  • 相关阅读:
    重新学习MySQL数据库开篇:数据库的前世今生
    Java网络编程和NIO详解9:基于NIO的网络编程框架Netty
    测试小鲸鱼
    golang
    技术篇
    请求报文和响应报文
    编程
    测试
    PHP
    centos7.1 从源码升级安装Python3.5.2
  • 原文地址:https://www.cnblogs.com/l10n/p/7523177.html
Copyright © 2011-2022 走看看