Обновите несколько строк, заменяя символ в определенной позиции в MySQL - PullRequest
0 голосов
/ 01 марта 2012

Представьте, что у вас есть столбец с кучей полей, подобных этому:

ab
abc
abcd
...

Я хотел бы преобразовать эти поля, используя один запрос, во что-то вроде этого:

a_b
ab_c
abc_d
...

То есть вставка подчеркивания непосредственно перед последней буквой.

Я мог бы сделать это один за другим:

update test set name = 'a_b' where name ='ab';
update test set name = 'ab_c' where name ='abc';
update test set name = 'abc_d' where name ='abcd';

Но, поскольку большое количество полей для обновления, яЯ полагаю, что должен быть лучший способ сделать это.

Ответы [ 3 ]

3 голосов
/ 01 марта 2012

Попробуйте этот запрос -

UPDATE test SET name = INSERT(name, LENGTH(name), 0, '_');
1 голос
/ 01 марта 2012

Используйте некоторые функции для работы со строками, например:

SET fieldname = CONCAT(LEFT(fieldname, LENGTH(fieldname)-1),"_",RIGHT(fieldname,1))
0 голосов
/ 01 марта 2012

Вы можете использовать функции SUBSTRING AND LENGTH :

UPDATE test
   SET name = SUBSTRING(name, 0, LENGTH(name) - 1) + '_' + SUBSTRING(name, -1)
...