如何将全名列插入姓名和姓氏列 MYSQL
how to insert a fullname column into name and last name columns MYSQL
有一个名为 school_teachers
的 table,其中有一个 full_name
列,
还有一个名为 teachers
的 table,它有 name
和 last_name
列。
我正在将 school_teachers
数据插入 teachers
table,
那么我应该如何将全名列插入姓名和姓氏列?
您可以将它们连接起来。我建议使用 concat_ws()
,因为它比 concat()
更优雅地处理 NULL
值。所以:
insert into school_teachers ( . . ., full_name)
select . . ., concat_ws(name, last_name)
from teachers t;
就是说,您应该只将 id 放入一个 table 中,它基本上有两列,即 school_id
和 teacher_id
。无需复制所有其他列。这是对数据库的错误使用——您可以在需要时使用 JOIN
来获取教师的姓名。
请使用以下查询。
INSERT INTO teachers (`name`, `last_name`)
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(full_name, ' ', 1),
' ',
- 1
) AS `name`,
IF(
SUBSTRING_INDEX(full_name, ' ', 1) = full_name,
"",
SUBSTRING_INDEX(
SUBSTRING_INDEX(full_name, ' ', 2),
' ',
- 1
)
) AS last_name
FROM
`school_teachers` ;
有一个名为 school_teachers
的 table,其中有一个 full_name
列,
还有一个名为 teachers
的 table,它有 name
和 last_name
列。
我正在将 school_teachers
数据插入 teachers
table,
那么我应该如何将全名列插入姓名和姓氏列?
您可以将它们连接起来。我建议使用 concat_ws()
,因为它比 concat()
更优雅地处理 NULL
值。所以:
insert into school_teachers ( . . ., full_name)
select . . ., concat_ws(name, last_name)
from teachers t;
就是说,您应该只将 id 放入一个 table 中,它基本上有两列,即 school_id
和 teacher_id
。无需复制所有其他列。这是对数据库的错误使用——您可以在需要时使用 JOIN
来获取教师的姓名。
请使用以下查询。
INSERT INTO teachers (`name`, `last_name`)
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(full_name, ' ', 1),
' ',
- 1
) AS `name`,
IF(
SUBSTRING_INDEX(full_name, ' ', 1) = full_name,
"",
SUBSTRING_INDEX(
SUBSTRING_INDEX(full_name, ' ', 2),
' ',
- 1
)
) AS last_name
FROM
`school_teachers` ;