Строка рефакторинга в поле MySQL - PullRequest
1 голос
/ 14 октября 2019

Я искал и не мог найти что-то, чтобы решить это. Я хочу обновить следующую таблицу:

+--------------------+
| description        |
+--------------------+
| Interna_172_16_1   |
| Interna_172_16_2   |
| Interna_172_16_3   |
| Interna_172_16_4   |
| Interna_172_16_5   |
+--------------------+

С той же самой строкой, но вычитая одно из последнего числа, например:

+--------------------+
| description        |
+--------------------+
| Interna_172_16_0   |
| Interna_172_16_1   |
| Interna_172_16_2   |
| Interna_172_16_3   |
| Interna_172_16_4   |
+--------------------+

Как мне это сделать? извините за плохой английский, спасибо !!

Ответы [ 3 ]

0 голосов
/ 14 октября 2019

Если вам нужен оператор выбора:

select concat(
  left(description, length(description) - length(substring_index(description, '_', -1))),
  substring_index(description, '_', -1) - 1
) description                                                         
from tablename

См. демо . Если вы хотите обновить таблицу:

update tablename
set description = concat(
  left(description, length(description) - length(substring_index(description, '_', -1))),
  substring_index(description, '_', -1) - 1
);

См. Демоверсию .
Результаты:

| description      |
| ---------------- |
| Interna_172_16_0 |
| Interna_172_16_1 |
| Interna_172_16_2 |
| Interna_172_16_3 |
| Interna_172_16_4 |

В этом коде предполагается, что все описания заканчиваются числовой строкой.

0 голосов
/ 14 октября 2019

Вы можете сделать это. Название таблицы должно быть адаптировано

UPDATE Table1
SET description = CONCAT(SUBSTRING_INDEX(`description`, '_', 3)
                   ,'_',SUBSTRING_INDEX(`description`, '_', -1) -1);
0 голосов
/ 14 октября 2019

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

update yourtable
set description = 
  concat(left(description, length(description)-1), right(description,1)-1)
where right(description,1) regexp '[1-9]+'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...