|
这是我需要做的。! Y& \$ r* C* H' k
我在Java中有一个列表,可以将其转换为逗号分隔的ID字符串,例如“ 3,4,5,6,1,2”
% a5 G5 S5 q7 L9 a/ W我想知道是否有办法将该字符串传递给oracle,并根据该字符串的排序顺序对sql代码进行排序?: i( M' `) V. p$ H0 D% m
所以这个查询:
4 r% Y8 }& A; e+ ?- u2 {0 [select t.id
1 Z) F0 {, Y7 i, j; Ffrom t_test t
9 K/ ^5 ^9 }- N' K, k9 j2 e将导致此顺序8 B" m/ R/ m1 h4 n4 p! q
ID
% Y3 q, n- ^! J3
1 Q& }# X) U7 K5 p! i9 O! z4: H+ X6 t" D* I0 J9 q
5
4 F Y7 Q- [2 z2 n$ J; e' P6' n1 K' H" t3 ]" O, h; @- h
1+ y8 Y' Y& p: s" E8 C( Z! t4 d
2
# `* Y0 l. a8 N% u4 v* ]5 D* C
Z9 y. T/ R4 v! S, C( @; z解决方案:5 F" l a) S' T8 Y5 z5 N `7 Z
9 k( }' W! a% i. M9 v- C
# U4 a* d( t1 O6 v4 K7 G
' r- x3 L# O, C4 N4 p
如果可以在Java中修改查询,则可以执行以下操作:% w+ z I8 l R3 Y: C( t
SELECT t.id
+ V& ]* X) p" b/ _6 ~# o7 kFROM t_test t
p- ^% S Q& G2 e. nORDER BY DECODE(t.id, 3, 'A', 'B') ASC,9 j0 n+ b' T( I! q
DECODE(t.id, 4, 'A', 'B') ASC,5 Z2 E1 Z0 W) c7 r
DECODE(t.id, 5, 'A', 'B') ASC,4 r7 C J ~% W+ L( d
DECODE(t.id, 6, 'A', 'B') ASC," d% }, L+ K# F" ^5 l3 C4 U( @5 v
DECODE(t.id, 1, 'A', 'B') ASC,
1 [* m5 \- r. R( b DECODE(t.id, 2, 'A', 'B') ASC;7 A3 K1 p, j! S2 T6 A- U
您必须为列表中的每个元素在order by子句中放入一个解码。每次解码中的第二个参数是列表的一个元素。 |
|