Sql 我想从一个特定的字段中获取数据

Sql 我想从一个特定的字段中获取数据,sql,Sql,我有疑问 SELECT SUBSTR('GENERAL - COMPUTERS - COMPUTER WORKSTATION', 1, (INSTR('GENERAL - COMPUTERS - COMPUTER WORKSTATION', '-')-1)) first, substr('GENERAL - COMPUTERS - COMPUTER WORKSTATION', instr('GENERAL - COMPUTERS - COMPUTER WORKSTATION', '-') +

我有疑问

SELECT SUBSTR('GENERAL - COMPUTERS - COMPUTER WORKSTATION', 1, (INSTR('GENERAL - COMPUTERS - COMPUTER WORKSTATION', '-')-1)) first, 
substr('GENERAL - COMPUTERS - COMPUTER WORKSTATION', instr('GENERAL - COMPUTERS - COMPUTER WORKSTATION', '-') + 1) second
from mtl_categories_v
where segment1 = '01';
结果如下:

first                 second
GENERAL    COMPUTERS - COMPUTER WORKSTATION
但我想要一个能给出结果的查询

first                 second                            third
GENERAL              COMPUTERS                 COMPUTER WORKSTATION

请告诉我在破折号前后提取字符的方法。

假设您使用的是MySQL:

SELECT TRIM(SUBSTRING_INDEX(col, '-', 1)) AS first,
       TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(col, '-', 2), '-', -1)) AS second,
       TRIM(SUBSTRING_INDEX(col, '-', -1)) AS third
FROM mtl_categories_v
WHERE segment1 = '01';
此处演示:


您正在使用哪些数据库管理系统?在Postgres中,您只需使用
string\u to\u array()