有一列ID
,我想ORDER
以特定的格式。列的数据类型为varchar
,并且始终具有字母值,前面通常为P
,后面跟着三到四个数字值。可能甚至紧跟着一个下划线或另一个字母值。我尝试过很少的选择,没有人回报我的愿望。ORDER BY字符串中的具体数值[SQL]
SELECT [ID] FROM MYTABLE
ORDER BY
(1) LEN(ID), ID ASC
/ (2) LEFT(ID,2)
OPTIONS TRIED (3) SUBSTRING(ID,2,4) ASC
\ (4) ROW_NUMBER() OVER (ORDER BY SUBSTRING(ID,2,4))
(5) SUBSTRING(ID,PATINDEX('%[0-9]%',ID),LEN(ID))
(6) LEFT(ID, PATINDEX('%[0-9]%', ID)-1)
选项1似乎最接近的是什么,我要寻找除了当一个_
或字母值按照数值。请参阅从选项1结果如下
P100
P208
P218
P301
P305
P306
P4200
P4510
P4511
P4512
P5011
P1400A
P4125H
P4202A
P4507L
P4706A
P1001_2
P2103_B
P4368_RL
想看看..
P100
P208
P218
P301
P305
P306
P1001_2
P1400A
P2103_B
P4125H
P4200
P4202A
P4368_RL
P4507L
P4510
P4511
P4512
P4706A
P5011
问题的根源在于您在单个列中有多条信息。这违反了1NF并导致这样的问题。 –
你实际上并没有清楚订单应该是什么。 – MatBailie
@MatBailie我只是编辑,以显示所需的结果正确,因为你键入:) – DRUIDRUID