SQL-用字符串的一部分排序

时间:2019-06-07 12:13:01

标签: sql sql-server

很抱歉转发。但是我需要。我有8个长度的字符串和查询;

 <script src="https://maps.googleapis.com/maps/api/js?key=******************&libraries=places";
              "https://maps.googleapis.com/maps/api/js?key=******************&callback=initMap" async defer></script>

和我的IsEmriNo列表;

select distinct Siparisler.IsEmriNo, MakinelerVeParcalar.Ozellik, DurumBilgisi.ID 
from Siparisler,
     MakinelerVeParcalar,
     DurumBilgisi 
where DurumBilgisi.ID = MakinelerVeParcalar.ID
  and Siparisler.IsEmriNo = MakinelerVeParcalar.IsEmriNo

我想要

MR18U001
MR18U002
MR18V001
MR19U003
MR19V002
MR19V001
OC19U002
OC18V005
OC18U007
SB18U010
SB18V005
SB19U028

第一次订购: 第3和第4个字符(降序为19、18、17 ...)

第二次订购: 第一个和第二个字符(对我来说是升序的MR,SB,OC ...->)

第三次订购:
最后3个字符(降序030,029,028 ... 001)

不能与我的旧帖子重复。

有可能吗?

1 个答案:

答案 0 :(得分:1)

以下order by将在您的情况下起作用:

order by substring(IsEmriNo, 3, 2) desc,
         CASE WHEN IsEmriNo LIKE '%MR%' THEN 0
              WHEN IsEmriNo LIKE '%SB%' THEN 1
              WHEN IsEmriNo LIKE '%OC%' THEN 2
             END,
         right(IsEmriNo, 3) desc