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 |
+--------+

转载于:https://www.cnblogs.com/liang545621/p/7523177.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值