Text 如何从oracle sql中的字符之间获取文本

Text 如何从oracle sql中的字符之间获取文本,text,substr,Text,Substr,嗨,这是我的第一篇文章,我也是sql新手。我正在尝试从字符串中提取文本 我有一个如下所示的表列 site-abc-left site-def-left 站点-ghi-右侧-内部 site-jkl-right-internal 站点-mno 现场-pqr 我需要一个在前两个'-'之间返回文本的查询,但根据示例,有些查询只有一个'-' 比如说 abc def ghi jkl mno pqr 我完全接受任何帮助 我一直使用的代码只给了我第一列“site” 选择SUBSTR(站点描述,1,instr(站

嗨,这是我的第一篇文章,我也是sql新手。我正在尝试从字符串中提取文本

我有一个如下所示的表列

site-abc-left

site-def-left

站点-ghi-右侧-内部

site-jkl-right-internal

站点-mno

现场-pqr

我需要一个在前两个'-'之间返回文本的查询,但根据示例,有些查询只有一个'-'

比如说

abc

def

ghi

jkl

mno

pqr

我完全接受任何帮助

我一直使用的代码只给了我第一列“site”

选择SUBSTR(站点描述,1,instr(站点描述,'-',1,1)-1)作为loc


从表中

我还没有检查,但我认为这对您有用

substr(var1,1,instr(site.description,'-',1,1)+1-instr(site.description,'-',1,2)-1)

如果不需要稍作更改,它应该可以工作。让我知道结果

假设您的数据位于一个名为test\n的表格中,其中只有列val和上述值,如您的问题所述,查询是:

select val
     , instr(val, '-', 1,1) + 1 START_POS
     , instr(val, '-',1,2) END_POS
     , substr(val, instr(val, '-', 1,1) + 1, decode(instr(val, '-',1,2),0,length(val)+1,instr(val, '-',1,2) ) - instr(val, '-', 1,1)-1 ) result
FROM test_n;

即使它们不在两个
-
之间,也要返回只有一个
-
的对象吗?“对”呢?它介于两个
-
之间,为什么它们没有被返回?到目前为止您尝试了什么?向我们显示您当前使用的代码。是的,我需要返回带有一个
-
和两个
-
的代码。接下来我不感兴趣,比如“对”。你还有什么办法可以添加另一个函数来修剪输出中的第一个字符吗?从OP的示例中,结果将是:bc、ef、hi。。