我在尝试运行的 SQL 语句方面需要帮助,我已经做了很多阅读和测试,但我无法得到正确的结果,因此我在这里提出了请求。
我正在尝试从已从两个源连接数据的列中提取数据,我想在连接之前和之后分隔数据,连接是“ - ”(连字符两边都有空格),可以是字母数字' - '之前或之后的字符,这是我需要的数据。只是为了增加复杂性,一些行没有连接数据,即没有“ - ”,当满足这一点时,可以简单地提取整个列值并将其视为 BB 端(参见下面的第一个 BB 示例) .
因此,当我完成后,我想将 AA 侧(- 之前)和 BB 侧(- 之后)分开,以允许单 BB 情况。
查看数据可能会出现以下场景。
BB<br>
AA - BB<br>
AA-aa - BB<br>
AA - BB-bb-cc<br>
AA-aa - BB-bb-cc<br>
对于上述所有场景,我可以让代码正常工作,但并非始终如一——您能否建议正确的代码,或者即使有更好的解决方案不会影响 SQL 性能。
我一直在尝试 AA 方面的示例:-
作品:
select substr('AA - BB-bb', 0, instr('AA - BB-bb', ' - ', 1, 1)-1) AS A_NAME
from DUAL;
失败(仅获得 AA,而不是 AA-aa):
select substr('AA-aa - BB-bb', 0,instr('AA-aa - BB-bb', ' - ', 1, 1)-1) AS A_NAME
from DUAL;
我一直在尝试 BB 方面的示例:-
失败:
select SUBSTR('AA-aa - WHENEHEH', INSTR('AA-aa - WHENEHEH',' - ', -1, 1)+1, 100)
B_NAME from dual;
谢谢,马克。