2014-10-30 82 views
0

我有一個長整數爲5的字符串。所以長度可以是:5,10,15 ...... 我想把這個字符串分成5個字符塊來傳遞在IN clausole:Oracle sql中拆分字符串的大小寫

String="00000111112222233333" 

我想:

SELECT * FROM myTable WHERE code IN ('00000','11111','22222','33333') 

可以做到這一點在SQL?

+0

我看你有沒有 「字符串=」。你是從另一種語言(Java等)調用SQL還是隻是爲了顯示什麼是原始的字符串? – Ascalonian 2014-10-30 19:13:48

+0

是的,我打電話給Ibatis的sql – user1066183 2014-10-30 20:22:03

回答

3
select regexp_substr(s, '.{5}', 1, lvl) chnk 
from (select s, level lvl 
     from (select '00000111112222233333' s from dual) 
     connect by level <= length(s)/5); 
  1. 使用Connect通過生成所需的行數

  2. 對於每一行發現任何5個字符從字符串的開頭開始,並得到第N次數。

+0

這個解決方案對我來說效果很好。 – user1066183 2014-10-30 20:26:06

1

使用分層查詢拆分字符串,並substr提取的每個數據塊:

with data as (select '00000111112222233333' s from dual) 

select substr(s, (level-1)*5+1, 5) chnk 
    from data 
    connect by level <= length(s)/5 

http://sqlfiddle.com/#!4/d41d8/37139

相關問題