嗨,这是我的第一篇文章,我也是sql的新手。我试图从字符串中提取文本
我有一个看起来像这样的表格列
site - abc - left
site - def - left
site - ghi - right - inner
site - jkl - right - inner
site - mno
site - pqr
我需要一个可以在前两个' - '之间返回文本的查询,但根据示例,有些只有一个' - '。
例如。
abc
def
ghi
jkl
mno
pqr
任何帮助都非常接受
我一直在使用的代码只给了我第一列“网站”。
SELECT SUBSTR(site.description,1,instr(site.description,'-',1,1)-1) AS loc
FROM table
答案 0 :(得分:2)
假设您的数据位于名为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;
答案 1 :(得分:0)
我还没有检查过,但我认为这对你有用
substr(var1,1,instr(site.description,'-',1,1)+1-instr(site.description,'-',1,2)-1)
它应该有用,如果它不需要稍微改变。我知道结果