Sql перемещение значений из одного столбца в два разных столбца - PullRequest
0 голосов
/ 17 марта 2020

Моя проблема заключается в следующем - в базе данных у меня есть таблица продуктов с колонкой размера. Однако теперь я создал два новых столбца x_size и y_size, и я хотел переместить значения из столбца размера в эти 2 столбца. Например, в базе данных у меня есть запись, где значение столбца размера составляет 100x200, теперь я хочу перевести «100» в новый столбец x_size и «200» в столбец y_size, и так для каждой из записей в этом Таблица.

Я пытался с:

UPDATE `post` SET `x_size `=`size`
UPDATE `post` SET `y_size `=`size`

Но это обновляет значение всего столбца размера, а не только его часть. Буду благодарен за помощь

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Если у вас есть несколько записей, которые вы хотите перенести из столбца размера, вы можете извлечь все записи из таблицы, а затем разделить значения размера с помощью функции PHP explode () . Поскольку вы пометили Laravel, вот простое решение Laravel:

$products = Products::get();
foreach ($products as $product){
    $size = explode('x', $product->size);
    $product->x_size = $size[0]; //First element from exploded array
    $product->y_size = $size[1]; //Second element from exploded array
    $product->save();
 }

Выход Tinker:

>>> $size = '100x200';
=> "100x200"
>>> $exlpodedArray = explode('x', $size);
=> [
     "100",
     "200",
   ]
>>> $x_size = $exlpodedArray[0];
=> "100"
>>> $y_size = $exlpodedArray[1];
=> "200"
0 голосов
/ 17 марта 2020

Вы можете использовать substring_index():

UPDATE post
    SET x_size = substring_index(size, 'x', 1),
        y_size = substring_index(size, 'x', -1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...