帖子內容
表:字段:name id
aaa 1,2,3
bbb 1,2
結果:name id
aaa 1
aaa 2
aaa 3
bbb 1
bbb 2
(蘭蘭)
select
name,regexp_substr(id,
'[^,]+',
1,n)
from
test_a
left
join (
select
level
,rownum n
from
dual connect
bylevel
<
10) on1
=1where
regexp_substr(id,
'[^,]+',
1,n)
isnot
null
在大神級別的同事幫助下終於是搞明白了,哈哈,小自豪下,下面進入主題
首先來看
select
level
,rownum n
from
dual connect
bylevel
<10
該結果為:
level n
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
這樣就應該知道
select
name,id
from
test_a
left
join (
select
level
,rownum n
from
dual connect
bylevel
<
10) on1
=1的結果是什麼了!
在來看regexp_substr(id,'
[^,]+',
1,n)
regexp_substr是同過正規表示式來拆分字串的函式,用法見
看"[^,]+"這條正規表示式,其作用就是從字串的開始位置進行匹配","
比如"2,3,4,5,6"
當第一次查詢,也就是dual查詢結果中的第一條記錄,即n=1,那麼就是regexp_substr(id,'
[^,]+',
1,1) —— 結果為2
當第三次查詢,也就是dual查詢結果中的第一條記錄,即n=3,那麼就是regexp_substr(id,'
[^,]+',
1,3) ——結果為4
當第6次查詢,也就是dual查詢結果中的第一條記錄,即n=6,那麼就是regexp_substr(id,'
[^,]+',
1,6) ——結果為空,此時不滿足
where
regexp_substr(id,
'[^,]+',
1,n)
isnot
null
的條件,故不計入結果
進而實現了字串的分割,也實現的對結果的過濾,實現了題目的需求。
但仍有一點不太懂,如果輸入的id中的","個數超過10個呢??
正規表示式我也不太熟,具體看參照
別問我connect by
看了乙個帖子後的感想
大學主要就是打基礎。這是我的基本認識。至於這些基礎知識以後會不會用上,那是另外一回事。可能很多人一輩子也用不上。但是,從事某些工作,做某些應用時,也許會用到某些基礎知識,到時候再補就麻煩了。舉個例子,編譯原理,可能很多人會覺得沒有用。筆者在工作中碰到過乙個需求,寫個問卷調查的程式,要求若第1題答a,...
論壇裡面的乙個帖子
作為專案經理一定要關注計畫和跟蹤,控制好工期和質量 要培養好乙個團隊。自己要思考,這個專案做下來,自己能得到什麼?組員能得到什麼?公司能得到什麼?想清楚了再做?其實很多事情在接收專案的時候就要想到的。剛做專案經理慢慢來,一點一點學嘛!抓緊學習專案管理的理論知識。雖說理論不一定有用,但是理論可以指導你...
北郵人論壇的乙個帖子
發信人 liu487639 年輕有為小正太 信區 feeling 標 題 re 生命不是拿來作孽的 發信站 北郵人論壇 tue oct 13 16 22 43 2015 站內 生命真的應該有點擔當,不擔當點什麼,生命太輕了,輕到你留不下任何一點東西 生為子女,父母的恩情報了麼?我一直覺得唯一讓人割捨...