Oracle字串欄位內的字元排序

2021-08-23 12:53:14 字數 1890 閱讀 1390

這個是狙狙的sql解法。

引用需求

今天和梁翁在群裡聊天,小傢伙突然丟擲乙個有意思的問題,那就是字串欄位內的字串排序問題,比如有列 col, 有資料 'rdgs' , 要求輸出為 'dgrs' 。

oracle分析函式支援聚合:)

create

table

t_test(f

varchar2(10

));

insert

into

t_test

values

('sdffesa');

insert

into

t_test

values

('asdflkj');

insert

into

t_test

values

('ijf92');

select

f,max

(replace

(sys_connect_by_path(c,

' '),

' ',

''))f1

from(

select

f,rn,c,row_number()over(

partition

byf

order

byc)

asord

from

(select

f,decode(rn, 1

,substr(f,1,

1), 2

,substr(f,2,

1), 3

,substr(f,3,

1), 4

,substr(f,4,

1), 5

,substr(f,5,

1), 6

,substr(f,6,

1), 7

,substr(f,7,

1), 8

,substr(f,8,

1), 9

,substr(f,9,

1), 10

,substr(f,10,

1) )

asc,rn

from

t_test a ,(

select

level

rn from

dual

connectby1

=1andlevel

<=

10)b

where

length(a.f)>=b.rn))

start

with

ord=

1connect

byf=

prior

f and

ord-1=

prior

ord

group

byf;

drop

table

t_test;

/* f f1

ijf92 29fij

asdflkj adfjkls

sdffesa adeffss */

後來受到小梁的啟發,修改了一下拆分字串的方法,可以把decode去掉

--測試環境

create

table

t_test(f

varchar2(10

));

insert

into

t_test

values

('sdffesa');

insert

into

t_test

values

('asdflkj');

insert

into

t_test

Oracle字串欄位內的字元排序

這個是狙狙的sql解法。引用需求 今天和梁翁在群裡聊天,小傢伙突然丟擲乙個有意思的問題,那就是字串欄位內的字串排序問題,比如有列 col,有資料 rdgs 要求輸出為 dgrs oracle分析函式支援聚合 create table t test f varchar2 10 insert into ...

Oracle字串欄位內的字元排序

這個是狙狙的sql解法。引用需求 今天和梁翁在群裡聊天,小傢伙突然丟擲乙個有意思的問題,那就是字串欄位內的字串排序問題,比如有列 col,有資料 rdgs 要求輸出為 dgrs oracle分析函式支援聚合 create table t test f varchar2 10 insert into ...

字串內特殊字元處理

問題描述 輸入乙個字串,裡面包含特殊字元 對每個字串作如下處理 1.如果遇到 則刪除 之前的所有字元 包括 2.如果遇到 則刪除 之前的乙個字元 包括 問題分析 最直接的辦法,遍歷整個字串,遇到 再做相應處理,處理可以是直接刪除,但需要注意的是,如果直接刪除,刪除會改變字串大小,遍歷字串則應該注意。...