2014-09-04 58 views
0

我需要對空間usig SQL後的所有內容進行排序。在下面的例子中,我希望它從姓氏開始進行排序(升序)。排序SQL中特定字符後的所有內容

USA-J。 Doe
USA-M。小鼠
USA-A。鼠標
USA-D。鴨
USA-P。 Panther
USA-T。鳥

我需要它排序整個字符串,但在最後一個名字。如果有兩個相同的姓氏,我希望它考慮名字的首字母。結果將是:

USA-T。 Bird
USA-J。 Doe
USA-D。鴨
USA-A。鼠標
USA-M。 Mouse
USA-P。 Panther

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

我希望有人能完全回答這個問題。無論出於何種原因,有人在這個問題上給我一個-1。我無法弄清楚爲什麼。我已經如我所知一樣具體,我無法找到最終作品的答案 - 如果姓氏相同,則按第一個字母排序。

謝謝各位回覆。信息有所幫助。我不得不在「名稱」周圍添加括號,因爲該字段的名稱與實際表的名稱相似。

+0

什麼數據庫您使用的? – 2014-09-04 03:36:38

+0

這看起來並不像它需要考慮名字(由名字的第一個字母表示)。在這個例子中,有A.鼠標和M.鼠標。我錯了嗎? – Beckie 2014-09-04 03:46:19

+0

我將需要在SQL Server和MS Access中使用此代碼。 – Beckie 2014-09-04 03:53:05

回答

2

這取決於數據庫。下面是如何可能在SQL Server中做到這一點:

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

同樣的邏輯也適用於其他數據庫但功能是不同的。

例如,在甲骨文:

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

而且,在MySQL中,你可以使用類似的邏輯,但這是簡單的:

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

而且在MS Access:

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

對於按照lasname排序,您需要在SQL服務器中使用像這樣的名字:

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) 
相關問題