我需要在空间使用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"周围添加括号。因为该字段的名称与实际表的名称相似。
答案 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)