MySQL -使用分隔符将列拆分为多行

  • 本文关键字:拆分 分隔符 MySQL mysql sql
  • 更新时间 :
  • 英文 :


我遇到了一个旧的帖子,并尝试了一个项目的代码,我正在工作,它工作了,但我仍然很困惑,为什么,这里有人可以解开这里代码背后的逻辑吗?我特别指的是这把小提琴。

我理解substring_index,但不确定什么"数字",以及字符长度的计算。

提前感谢。

numbers表是一种创建由顺序整数组成的临时表的方法。

mysql> SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4;
+---+
| n |
+---+
| 1 |
| 2 |
| 3 |
| 4 |
+---+

这些数字用于从逗号分隔的字符串中提取N的单词。这只是一个猜测,4足以说明字符串中的单词数。

CHAR_LENGTH()表达式是对命令分隔的字符串中的单词进行计数的一种棘手的方法。逗号的数量决定了单词的数量。因此,如果您将字符串的长度与去掉逗号的字符串的长度进行比较,它会告诉您逗号的数量,从而告诉您单词的数量。

mysql> set @string = 'a,b,c,d,e,f';
mysql> select char_length(@string) - char_length(replace(@string, ',', '')) + 1 as word_count;
+------------+
| word_count |
+------------+
|          6 |
+------------+

像这样令人困惑的代码是将数据存储在逗号分隔的字符串中不是一个好主意的众多原因之一。

最新更新