sql**
-- 建立需要劃分的字串
with t1 as(
select
'one,two,three,four,five,six,seven,eight,nine,zero'
as source_string
from dual),
-- 統計字串中子串的個數,用 ',' 來劃分子串
t2 as(
select regexp_count(source_string, '[^,]+') as source_substring_count
from t1),
-- 根據子串的個數建立索引列,用於給t4的regexp_substr()方法索引
t3 as(
select rownum as row_number
from dual, t2
connect
by rownum <= t2.source_substring_count),
-- 根據每個索引值逐個擷取字串
t4 as(
select t3.row_number as substring_index,
regexp_substr(t1.source_string, '[^,]+', 1, t3.row_number) as
substring
from t1, t3)
select substring_index, substring
from t4;
-- 建立需要劃分的字串
with t1 as(
select 'one,two,three,four,five,six,seven,eight,nine,zero' as source_string
from dual),
-- 統計字串中子串的個數,用 ',' 來劃分子串
t2 as(
select regexp_count(source_string, '[^,]+') as source_substring_count
from t1),
-- 根據子串的個數建立索引列,用於給t4的regexp_substr()方法索引
t3 as(
select rownum as row_number
from dual, t2
connect by rownum <= t2.source_substring_count),
-- 根據每個索引值逐個擷取字串
t4 as(
select t3.row_number as substring_index,
regexp_substr(t1.source_string, '[^,]+', 1, t3.row_number) as substring
from t1, t3)
select substring_index, substring from t4;
鑑於 regexp_count() 方法是 oracle 11g 才新加上的,之前的版本並沒有,這裡再用另一種方法來統計子串的個數:
sql**
-- 建立需要劃分的字串
with t1 as(
select
'one,two,three,four,five,six,seven,eight,nine,zero'
as source_string
from dual),
-- 統計字串中子串的個數
-- 字串中','字元用''代替後,其減少的長度自然就是原串中','字元的個數
t2 as(
select length(t1.source_string) - length(replace
(t1.source_string, ',', '')) + 1
as source_substring_count
from t1),
-- 根據子串的個數建立索引列,用於給t4的regexp_substr()方法索引
t3 as(
select rownum as row_number
from dual, t2
connect
by rownum <= t2.source_substring_count),
-- 根據每個索引值逐個擷取字串
t4 as(
select t3.row_number as substring_index,
regexp_substr(t1.source_string, '[^,]+', 1, t3.row_number) as
substring
from t1, t3)
select substring_index, substring
from t4;
-- 建立需要劃分的字串
with t1 as(
select 'one,two,three,four,five,six,seven,eight,nine,zero' as source_string
from dual),
-- 統計字串中子串的個數
-- 字串中','字元用''代替後,其減少的長度自然就是原串中','字元的個數
t2 as(
select length(t1.source_string) - length(replace(t1.source_string, ',', '')) + 1
as source_substring_count
from t1),
-- 根據子串的個數建立索引列,用於給t4的regexp_substr()方法索引
t3 as(
select rownum as row_number
from dual, t2
connect by rownum <= t2.source_substring_count),
-- 根據每個索引值逐個擷取字串
t4 as(
select t3.row_number as substring_index,
regexp_substr(t1.source_string, '[^,]+', 1, t3.row_number) as substring
from t1, t3)
select substring_index, substring from t4;
執行結果:
oracle split 字元分割函式
oracle本身沒有字元分割函式,乙個字串分割後,要以乙個結果集的方式存放,所以需要配合table一起用,分割後的字串是乙個陣列,在oracle中,可以先按如下,建立乙個型別,該型別就是split裡要返回的型別,如下 create or replace type strsplit type as t...
SQL拆分函式
drop function dbo.split 刪除自定義函式 dbo.split 函式名 函式 dbo.split create function dbo.split c varchar 1000 split varchar 2 returns t table name varchar 100 a...
生成函式 拆分數計算
計算整數n的拆分數用的是生成函式的方法。首先來看一下生成函式所解決的問題 1 x x n 1 x x n 1 x x n 這個母函式可以這樣理解 轉化為經典的 不可區分球 放 可區分盒 中的問題 每乙個括號表示乙個盒內放的球的情況 在計算拆分數時需要用乙個ferrers影象性質 n拆分成m個數的和的...