SQL 如何对带有数字的文本按字母顺序排序,然后按数字顺序排序,并在右侧附加字符串

问题描述 投票:0回答:0

存储在

varchar
列中的数据如下所示:

FORT BEND COUNTY MUD 2
FORT BEND COUNTY MUD 23
FORT BEND COUNTY MUD 138
FORT BEND COUNTY MUD 256
FORT BEND COUNTY MUD 250A
FORT BEND COUNTY MUD 23 JT FAC
FORT BEND COUNTY MUD 169 MASTER
FORT BEND COUNTY MUD 214 INTERNAL
FORT BEND COUNTY MUD 122 123 JT FAC
FORT BEND COUNTY MUD 169 - INTERNAL
FORT BEND COUNTY MUD 188 JT Sewer Plant
FORT BEND COUNTY MUD 188 JT Water Plant
FORT BEND COUNTY MUD 214 MASTER DISTRICT

我试图先对名称进行排序,然后如果名称包含数字则按数字排序。

我目前正在使用这个SQL代码:

SELECT DistrictName
FROM Master
ORDER BY LEFT(DistrictName, PATINDEX('%[0-9]%', DistrictName + '0') - 1), LEN(DistrictName), DistrictName

除非数字右侧有一个额外的字符串,否则效果很好。我希望“23 JT FAC”在“MUD 23”等下排序。因此首先对名称进行排序,如果名称包含数字,则对数字进行排序。我怎样才能修改这个查询来实现这一点?

谢谢,

sql vb.net alphanumeric
© www.soinside.com 2019 - 2024. All rights reserved.