在SQL中的特定字符后排序所有内容

时间:2014-09-04 03:35:55

标签: sql sql-server ms-access

我需要在空间使用SQL之后对所有内容进行排序。在下面的示例中,我希望它从姓氏开始排序(升序)。

USA-J。母鹿
USA-M。鼠标
USA-A。鼠标
USA-d。鸭
USA-P。豹
USA-T。鸟

我需要它来整理整个字符串,但是在姓氏上。如果有两个相同的姓氏,我希望它考虑到第一个名字的首字母。结果将是:

USA-T。鸟
USA-J。母鹿
USA-d。鸭
USA-A。鼠标
USA-M。鼠标
USA-P。 PANTHER

我需要在SQL Server和MS Access中使用此代码。

我希望有人能够完全回答这个问题。无论出于何种原因,有人在这个问题上得分为-1。我无法弄清楚为什么。我已经具备了我所知的特定内容,而且我无法找到最后一篇文章的答案 - 如果姓氏相同,则按第一个字母排序。

谢谢你们回复。信息有所帮助。我不得不在" name"周围添加括号。因为该字段的名称与实际表的名称相似。

2 个答案:

答案 0 :(得分:2)

这取决于数据库。以下是在SQL Server中执行此操作的方法:

order by substring(name, charindex(' ', name) + 1, len(name)))

类似的逻辑在其他数据库中有效,但功能不同。

例如,在Oracle中:

order by substr(name, instr(name, ' ') + 1)

而且,在MySQL中,你可以使用类似的逻辑,但这更简单:

order by substring_index(name, ' ', -1)

在MS Access中:

order by mid(name, instr(name, ' ') + 1)

答案 1 :(得分:0)

对于按lasname排序的名字,你需要在SQL server中使用这样的名字:

order by substring(name, charindex(' ', name) + 1, len(name))), substring(name, charindex('-', name) + 1, 1))

在Access中

order by mid(name, instr(name, ' ') + 1), order by mid(name, instr(name, '-') + 1, 1)