|
这是我需要做的。
. x- ]; e4 W; u/ ~我在Java中有一个列表,可以将其转换为逗号分隔的ID字符串,例如“ 3,4,5,6,1,2”& i- c6 m) t3 K( y B" H- V
我想知道是否有办法将该字符串传递给oracle,并根据该字符串的排序顺序对sql代码进行排序?
: S0 Y7 q' w& `6 a# v- N2 Z0 f, x所以这个查询:
, ?9 w* |6 b# {, p' {select t.id* f+ K3 l$ N4 ?% d7 J* o
from t_test t
! X: n% V$ E( N9 Z. V+ T) C! B将导致此顺序& i: F! U- e Z' b8 @& M
ID
' @, V6 U. @& B" _$ P3' ~+ ~. M! T* M: W
4
$ g0 p1 [; K9 |/ {. s5* F! y) t2 c. \- @* x( Z7 D
68 ^9 D( }+ }( s# R' p
1: X8 Z) Y& \( H6 r |* d/ e
2
1 @( {( ~# V# V- }2 Q) w8 r6 [ ( k8 E" H+ ?8 c6 i+ F. g
解决方案:6 ]# d& ~+ V2 G( |# X
6 D' e3 n" z7 X0 X
' e1 Q0 ]% L3 [
% k+ c" E8 T. V6 v& o j 如果可以在Java中修改查询,则可以执行以下操作:
/ e5 v) J f; h1 R; |* rSELECT t.id# B. t+ m$ f$ P: m: w, T3 h. s2 _$ l
FROM t_test t
0 t& M* w* `& _; Z, L7 z5 V% i( TORDER BY DECODE(t.id, 3, 'A', 'B') ASC,1 V' G7 `. E4 B. O9 s- K
DECODE(t.id, 4, 'A', 'B') ASC,4 u O6 C1 K0 _ _
DECODE(t.id, 5, 'A', 'B') ASC,
3 k, B. {. X3 A DECODE(t.id, 6, 'A', 'B') ASC,3 O$ v! v4 I" C& }
DECODE(t.id, 1, 'A', 'B') ASC,
# I' r" J& o) v. a6 S3 U DECODE(t.id, 2, 'A', 'B') ASC;8 a7 M$ V8 v0 d& v2 m" a) p
您必须为列表中的每个元素在order by子句中放入一个解码。每次解码中的第二个参数是列表的一个元素。 |
|