【发布时间】:2014-12-04 15:14:26
【问题描述】:
我正在尝试拆分字段(在某个分隔符处,在下面的示例中使用“;”)并将拆分结果插入到表中。下表说明了我正在尝试做的事情。
注意:在第一行中,由分号 (;) 分隔的值永远不会超过 3 个,但可以少于 3 个。
mysql> SELECT * FROM new;
+-------+------+------+------+
| first | a | b | c |
+-------+------+------+------+
| a;b;c | NULL | NULL | NULL |
| d;e;f | NULL | NULL | NULL |
| g;h | NULL | NULL | NULL |
| i | NULL | NULL | NULL |
+-------+------+------+------+
查询的结果应该是这样的
mysql> SELECT * FROM new;
+-------+------+------+------+
| first | a | b | c |
+-------+------+------+------+
| a;b;c | a | b | c |
| d;e;f | d | e | f |
| g;h | g | h | NULL |
| i | i | NULL | NULL |
+-------+------+------+------+
我一直在尝试使用的查询是(这个特定的将只检索第一个值)。
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(first, ';', 1), ';', -1) FROM new;
但是,当分隔字符的数量少于 3 个时,此方法不会提供任何帮助,因为它会返回遇到的第一个字符,而不是 NULL 或空字符串 ("")。
任何人都知道如何解决这个问题?
干杯
【问题讨论】:
-
第一列是否总是最多三个字段,用逗号分隔?