在我的 SQL 语句中,我必须从字符“_”处的字符串中提取子字符串。例如,字符串可以是“A_XXX”“AB_XXX”“ABC_XXXX”,因此提取的子字符串应该类似于“A”“AB”“ABC”。
在 Oracle 中,这很容易使用 substr() 和 instr() 函数:
select substr('AB_XXX', 1, instr('AB_XXX', '_')-1) as substring
from dual;
结果将是:
SUBSTRING
------------------------
AB
我需要这个查询来检查一个特定的子字符串是否在一个字符串数组中。
整个查询看起来像:
select 'AB_XXX' from dual
where (instr('ABC_AB_A', substr('AB_XXX', 1, instr('AB_XXX', '_')-1))>0);
有没有办法用 SQL 标准编写它?
在此先感谢您的帮助。
编辑:
如果 PostgreSQL 提供了替代功能,它也会有所帮助。其余的可以用例如 IN 来解决。真正重要的部分是获取子字符串。