Mysql 使用正则表达式将一列拆分为多列

Mysql 使用正则表达式将一列拆分为多列,mysql,regex,Mysql,Regex,我有一张表和一些数据: -- Table CREATE TABLE IF NOT EXISTS `myTable` ( `myColumn` varchar(32) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Data INSERT INTO `myTable` (`myColumn`) VALUES ('AAA BBB CCC'), ('AA BB CCCC'), ('BBB CC AAAA'), ('C AAA BBB'),

我有一张表和一些数据:

-- Table
CREATE TABLE IF NOT EXISTS `myTable` (
  `myColumn` varchar(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Data
INSERT INTO `myTable` (`myColumn`) VALUES
('AAA BBB CCC'),
('AA BB CCCC'),
('BBB CC AAAA'),
('C AAA BBB'),
('CCC AA BBB');
我想运行一个返回3列的
SELECT
查询

这些列应称为
A
B
C

结果应该类似于:

+------+-----+------+
| A    | B   | C    |
+------+-----+------+
| AAA  | BBB | CCC  |
| AA   | BB  | CCCC |
| AAAA | BBB | CC   |
| AAA  | BBB | C    |
| AA   | BBB | CCC  |
+------+-----+------+
我有三个正则表达式,通过使用它们,可以匹配所有数据:

^([A]+) ([B]+) ([C]+)$
^([B]+) ([C]+) ([A]+)$
^([C]+) ([A]+) ([B]+)$
是否可以使用这些正则表达式生成这样的结果


如果是这样的话,请举个例子,即使只是针对问题的一个子集。

在MySQL中使用正则表达式是无法做到的。不幸的是,MySQL只支持将正则表达式作为布尔条件(特别是在where子句中),而不支持提取或更改字符串的内容

但是,您可以通过使用MySQL查询完全实现所描述的内容。下面是您的场景的使用示例

SELECT substring_index(substring_index(myColumn, ' ', 1), ' ', -1) AS `A`, 
       substring_index(substring_index(myColumn, ' ', 2), ' ', -1) AS `B`,
       substring_index(                myColumn         , ' ', -1) AS `C`
  FROM ...  
或者,如果您必须绝对使用正则表达式,那么您可以将MySQL的输出通过管道传输到某个正则表达式引擎。问我你是否需要更多关于这个策略的信息