Разбить значение одного столбца на два столбца в запросе MySQL? - PullRequest
0 голосов
/ 28 августа 2018

Я хочу разбить один столбец на два столбца и обновить в два других столбца.

Как показано ниже.

Name              FirstName      LastName
ABC NAME             ABC           NAME
PQR RNP              PQR           RNP
SUM NUM              SUM           NUM

взорвать и обновить значение поля имени и обновить в тех же таблицах два столбца FirstName и LastName.

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Решение:

UPDATE campaign_participants SET first_name = SUBSTRING_INDEX( name,  ' ', 1 ) ,
last_name = IF(SUBSTRING_INDEX( name,  ' ', 1 ) != SUBSTRING_INDEX( name,  ' ', -1 ), SUBSTRING_INDEX( name,  ' ', -1 ), "");
0 голосов
/ 28 августа 2018
SELECT
  Name,
  LEFT(Name, LOCATE(' ', Name) - 2) AS FirstName,
  RIGHT(Name, LENGTH(Name) - LOCATE(' ', Name)) AS LastName
FROM
  my_table;

Если вы используете другой движок SQL, вы можете изменить LENGTH() на LEN() и LOCATE() на CHARINDEX().

0 голосов
/ 28 августа 2018

Если вы хотите сделать это непосредственно в MySQL, вам понадобятся следующие запросы:

ALTER TABLE yourtable ADD COLUMN FirstName VARCHAR(30),
                      ADD COLUMN LastName VARCHAR(30);
UPDATE yourtable 
    SET FirstName = SUBSTRING_INDEX(Name, ' ', 1),
        LastName = IF(LOCATE(' ', Name) = 0, '', SUBSTRING_INDEX(Name, ' ', -1));
ALTER TABLE yourtable DROP COLUMN Name;

Всегда делайте резервную копию таблицы, прежде чем вносить структурные изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...