1

如何在 SQL 语句中进行排序,同时赋予数字低于字符的值?

例如:

  • “iPad Wi-Fi”应该出现在“iPad 2 Wi-Fi”之前
  • “iPad 2 Wi-Fi”应该出现在“iPad 3 Wi-Fi”之前
  • “iPad 3 Wi-Fi”应该出现在“iPhone”之前
  • “iPhone”应该出现在“iPhone 2”之前
4

2 回答 2

3

可能最简单的方法是有一个单独的列,您可以按照您想要的排序方式填充该列。

然后通过确保它由插入/更新触发器设置来确保它保持一致。

通过在插入/更新时使用单独的列集,您可以保证仅在需要时才计算此订单的成本,而不是每次您select. DBA 通常会牺牲空间来获得更多时间。

并且触发器的使用保持了 ACID 属性。

于 2012-05-31T08:35:42.277 回答
2
select *
from your_table
order by 
replace(replace(replace(replace(replace(name, '9', '0'), '8', '1'), '7', '2'), '6', '3'), '5', '4') asc
于 2012-05-31T08:38:19.727 回答