暂无图片
SQL求助,根据不同规则匹配的字符串如何整体排序
我来答
分享
瓦尔特
2021-08-24
SQL求助,根据不同规则匹配的字符串如何整体排序

有表,包含code列,有两种格式的数据:
aa-bb-2021-cc-dd-00123(年份-cc-dd-5位流水)
aabbccdd210122(年份后两位+4位流水)
现在想按照不同格式去整体排序,判断两种格式的方法是:寻找code中是否包含符号“-”
如果包含,则取年份后两位+流水号后四位,不包含则直接substr(code,-6),
请问order by后面的语句怎么写?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
每日一步

SQL> select * from t1;

CODE

aa-bb-2021-cc-dd-00123
aabbccdd210122
aa-bb-2021-cc-dd-00130
aabbccdd210203

SQL> select
2 case when regexp_count(code,’-’)>0
3 then
4 substr(code,9,2)||substr(code,-4)
5 else
6 substr(code,-6)
7 end as new_code
8 from t1
9 order by 1;

NEW_CODE

210122
210123
210130
210203

SQL>

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交
相关推荐
这个sql 把临时表空间占满了,怎么排查呢?
回答 4
查询实时使用temp表空间的sqlid和sid:setlinesize260pagesize1000colmachinefora40colprogramfora40SELECTse.username,
在SQL中,两个表格left join之后,最多能产生多少行数据?
回答 1
已采纳
这是sql基础,建议看下专门介绍内连接,左连接,右连接,全外连接等的相关概念比较好。你上面的问题,实际上返回的行数最多是左边t1表的行数(当where条件中没有对t1做筛选的情况下)。
问个小问题:事务回滚的反向sql会写到redo吗?
回答 1
已采纳
不会
请教,case when出来的值如何相加?
回答 2
sys@ORCL08SEP21>select(casewhen11then1else0end)1fromdual;(CASEWHEN11THEN1ELSE0END)12不清楚你是不是这个意思?还
为什么学了SQL还要学ETL呢?
回答 2
已采纳
这两者根本就不能放在一起比较,因为这两者是描述的不同的东西。ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程结构化查询语言(StructuredQueryLanguage)简称SQL
想快速提升sql语言能力,目的为sql优化打好基础,有推荐的课程或书籍吗?
回答 3
SQLCOOKBOOK一本很好的专门讲SQL的书。
为什么联表查询并不是两个SQL查到的数据相加?
回答 1
要看你指定的连接类型fulljoin就是两个数据相加。
先执行sql语句 A(如果id=1存在,就更新X字段为1,如果不存在就插入),然后不等结果返回(异步执行),立即执行语句B(如果id=1存在,就更新X字段为2,如果不存在,就插入)。 那最后的结果,有没有可能 X 字段是 1 呢?
回答 4
如果id是唯一键,那么在修改或者插入这行的时候,不管有没有执行完,都会把这行锁起来,另一个会话想插入或者修改都是等待的,直到第一个会话commit。这个时候引入到第二个问题,where条件是否会检索未
oracle 表DML审计触发器
回答 1
对业务表DML时,到底报什么错?另外,对于insert,应该只有:new值,而无:old值,所以应该写成:insertintoAUDITDMLTABVALUES (:NEW.ID,null,
为什么Navicat工具这么贵,还有人用?
回答 8
mark
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~