将字符串拆分为行

时间:2011-11-16 11:56:03

标签: mysql sql database mysqldump

我正在使用MySQL。

我有一个名为“ class ”的表格,“”表格有三列nameyear和{{1}如下:

表:

enter image description here

现在我想使用上表创建一个名为“ temp ”的新表,其中包含class_codeclass_code列。

规则是上述“”表格的每一行的每个字段值中的每个字符串值都会被拆分为单词,并且每个单词都会插入到“ temp”中 temp 表格记录的value列表格如下:

temp 表:

enter image description here

我正在使用MySQL。

是否可以纯粹使用SQL语句生成“ temp ”表以及如何生成?

那是:

value

P.S:  我使用了一个简单的等长字符串作为值,但实际情况下具有非常随机长度字符串,并且每个字符串中的字数也是随机

2 个答案:

答案 0 :(得分:0)

您必须在MySql中编写一个字符串拆分函数

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');

并使用它来分割值并分配分割值并插入SP中的表格。有关更多信息,请参阅MySQL Split String

答案 1 :(得分:0)

CREATE TABLE new_table
SELECT SUBSTRING(name,  1, 4) as field, class_code FROM old_table
UNION
SELECT SUBSTRING(name,  6, 4) as field, class_code FROM old_table
UNION
SELECT SUBSTRING(name, 11, 4) as field, class_code FROM old_table
UNION
SELECT SUBSTRING(year,  1, 4) as field, class_code FROM old_table
UNION
SELECT SUBSTRING(year,  6, 4) as field, class_code FROM old_table