遇到一个需求,需要将排量段排序,这些排量段是这个样子的
有2-2.5L、2.5-3L,3-5L…17L、13L这种
思路就是,取字符串最前面一个数,来进行排序,如果有“-”的话,则取“-”前面的数字,如果没有,就取“L”前的数字。
需要用用到的sql公式有两个
SUBSTR(字符串,开始位置,结束位置)--分割字符串
INSTR(字符串,'某个符号')--找到某个符号在字符串中的位置
这里的SUBSTR
的两个分割位置都是包括本位置的,比如
SUBSTR('HELLO',0,3)--得'HEL'
所以,代码就是
CASE WHEN INSTR(DISPLACEMENT_SEC,'-')>0
THEN SUBSTR(T.DISPLACEMENT_SEC,0,INSTR(DISPLACEMENT_SEC,'-')-1)
ELSE SUBSTR(T.DISPLACEMENT_SEC,0,INSTR(DISPLACEMENT_SEC,'L')-1) END AS DIS_SORT
最后拿得到的DIS_SORT
使用TO_NUMBER
排个序就行。