我正在使用MySQL。
我有一个名为“ class ”的表格,“类”表格有三列name
,year
和{{1}如下:
类表:
现在我想使用上表创建一个名为“ temp ”的新表,其中包含class_code
和class_code
列。
规则是上述“类”表格的每一行的每个字段值中的每个字符串值都会被拆分为单词,并且每个单词都会插入到“ temp”中“ temp 表格记录的value
列表格如下:
temp 表:
我正在使用MySQL。
是否可以纯粹使用SQL语句生成“ temp ”表以及如何生成?
那是:
value
P.S: 我使用了一个简单的等长字符串作为值,但实际情况下具有非常随机长度字符串,并且每个字符串中的字数也是随机。
答案 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