3
我想根據長度以空格作爲分隔符來分割Oracle中的字符串。根據長度在oracle sql中分割字符串
例如,
MY_STRING="welcome to programming world"
我的輸出應是
STRING1="welcome to "
STRING2="programming "
琴絃應該是一個最大長度爲13個字符。位置26之後的單詞可以忽略。
我想根據長度以空格作爲分隔符來分割Oracle中的字符串。根據長度在oracle sql中分割字符串
例如,
MY_STRING="welcome to programming world"
我的輸出應是
STRING1="welcome to "
STRING2="programming "
琴絃應該是一個最大長度爲13個字符。位置26之後的單詞可以忽略。
你沒有提到你使用的是什麼版本的Oracle。如果您使用10g或以上,您可以使用regular expressions得到你需要的東西:
with spaces as (
select regexp_instr('welcome to programming world' || ' '
, '[[:space:]]', 1, level) as s
from dual
connect by level <= regexp_count('welcome to programming world' || ' '
, '[[:space:]]')
)
, actual as (
select max(case when s <= 13 then s else 0 end) as a
, max(case when s <= 26 then s else 0 end) as b
from spaces
)
select substr('welcome to programming world',1,a)
, substr('welcome to programming world',a, b - a)
from actual
此找到所有的空間的位置索引,然後找到一個最最接近但小於14.最後使用一個簡單的substr
分割你的字符串。字符串將有一個尾隨空格,所以你可能想要trim
這個。
您必須將您的字符串與空格連接以確保存在尾部空格,以便在字符串長度小於26個字符時最後一個單詞不會被刪除。
假設你使用的是早期版本,你可以與instr
和length
一起破解一些東西,但它不會很漂亮。
非常感謝..這是我期待的笏!我正在使用Oracle 10g .. – user1501309 2012-08-02 09:50:12