Text 如何从oracle sql中的字符之间获取文本
嗨,这是我的第一篇文章,我也是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(站
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。。