這個是狙狙的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.如果遇到 則刪除 之前的乙個字元 包括 問題分析 最直接的辦法,遍歷整個字串,遇到 再做相應處理,處理可以是直接刪除,但需要注意的是,如果直接刪除,刪除會改變字串大小,遍歷字串則應該注意。...