gpt4 book ai didi

sql - 根据长度在oracle sql中拆分字符串

转载 作者:行者123 更新时间:2023-12-04 21:14:28 24 4
gpt4 key购买 nike

我想根据我的字符串在Oracle中拆分字符串,并以空格作为分隔符。

例如,

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个字符,则最后一个单词不会被删除。

假设您使用的是较早的版本,则可以与 instrlength一起破解某些东西,但根本不会很漂亮。

关于sql - 根据长度在oracle sql中拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11771496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com