回答

收藏

如何在不同情况下按表列排序(Oracle)

技术问答 技术问答 341 人阅读 | 0 人回复 | 2023-09-14

如何在不同情况下( 大写小写 )对带有varchar2列的表进行排序?& Q0 j' H2 x: g
例如,当我按“名称”列进行排序时,将得到以下结果:
) p) g# _1 X% h4 [7 uANNIE
. P9 l' a3 S1 Y) qBOB' U1 k% R, m) ?) G+ `7 L
Daniel
+ \) i, ?6 d4 j0 O/ I+ \annie
) O0 b, |, o3 `  o% J, vbob
' n1 m, x( q! v# \1 U我想要的是这样的:
0 s) k; b; D9 S; A3 s. DANNIE0 Q8 I. o. F9 [, ^( G/ R  z
annie3 S6 R3 B' A9 f7 d' i
BOB8 s. D  F# R6 }! Q& r$ ]
bob
3 M0 o- i, F3 `: `( T7 f0 I: Q* s6 aDaniel7 y% X+ O. H# _* T% k' G! u
               
. C3 Z! x1 ^/ G2 }9 P5 `解决方案:
) K$ r/ }* r9 X5 P) q               
3 U3 z5 f6 e0 `: K/ B: |7 C& z
- U5 c2 S' G( f- L1 {
! r# i; G8 R. k6 m) i/ i                使用lower(field),例如5 o# H+ y" u- x1 W1 W) f5 O& Z2 v6 X
select * from tbl order by lower(name)7 p( L" S# I% c# _' k7 C) ?7 d
如果您需要解决非英语语言的特殊字符,则可能需要有关NLSSORT的其他答案。如果您不这样做,我会尝试和KISS一起使用,lower()因为它很容易记住和使用,并被他人阅读(可维护性)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则