如何强制在某些逻辑中对值进行排序

时间:2017-10-19 15:36:08

标签: sql-server sorting

在SQL Server中,如何强制将值排序显示在某些逻辑中。据我所知,SQL在排序值时首先放置字符,然后输入数字,然后输出字母。

现在,我需要在信后面加下划线。例如, 我的值为OA_G,范围介于MRIOL5

之间

目前,SQL将OA_G放在范围之间。但我需要强迫它超出范围。

2 个答案:

答案 0 :(得分:3)

你的前提似乎不正确。无论SQL Server如何对字符串数据进行排序,顺便说一句,这是由数据库的排序规则控制的,如果要对其进行手动排序,则无法实现您所寻求的结果。即:

鉴于三个字符串," MRI"," OL5"和" OA_G",按字符串值按升序排序。

当然,这将逐个字符地进行,从左到右比较每个字符。

自" M"在" O"之前,排序集的第一个成员将是" MRI"。接下来,比较" OL5"和" OA_G"。这封信" O"是一样的,所以检查下一个位置。 " L"大于" A"因为它是字母表中的第11个字符," A"是第一个,所以下一个成员将是" OA_G",留下" OL5"作为最后的成员。

没有SQL Server整理顺序可以使此评估为您提供您正在寻找的结果。

答案 1 :(得分:0)

如果数据的部分类似于MRIOL5OA_G等,是常量或很少更改,您可以制作一些表格,如

Part    | Priority
MRI     | 1 
OL5     | 2 
OA_G    | 3 

将其加入您的表格并ORDER BY Priority