MySql: обновление столбца с содержимым столбца плюс что-то еще - PullRequest
0 голосов
/ 26 января 2012

Я не очень разбираюсь в MySql (или в целом в SQL), поэтому извините за нубизм.

Я пытаюсь обновить группу записей String следующим образом:

Допустим, у нас есть это:

commands.firm.pm.Stuff

Хорошо, я хочу преобразовать это в:

commands.firm.pm.print.Stuff

Значение, добавить .print после вечера, перед "Stuff" (где Stuff может быть любая буквенно-цифровая строка).

Как бы я сделал это с MySql Query?Я уверен, что необходимо использовать REGEXP, но я не уверен, как это сделать.

Спасибо

Ответы [ 3 ]

2 голосов
/ 26 января 2012

Попробуйте что-нибудь подобное.Он находит последний период и вставляет туда вашу строку:

select insert(s, length(s) - instr(reverse(s), '.') + 1, 0, '.print')
from (
    select 'commands.firm.pm.Stuff' as s
) a

Для обновления:

update MyTable
set MyColumn = insert(MyColumn, length(MyColumn) - instr(reverse(MyColumn), '.') + 1, 0, '.print')
where MyColumn like 'commands.firm.pm.%'
0 голосов
/ 26 января 2012

Чтобы обновить строки, заканчивающиеся только на '.Stuff':

UPDATE TableX
SET Column = CONCAT( LEFT( CHAR_LENGTH(Column) - CHAR_LENGTH('.Stuff') )
                   , '.print'
                   , '.Stuff'
                   )
WHERE Column LIKE '%.Stuff'

Чтобы обновить все строки, добавив .print непосредственно перед последней точкой .:

UPDATE TableX
SET Column = CONCAT( LEFT( CHAR_LENGTH(Column) 
                           - CHAR_LENGTH(SUBSTRING_INDEX(Column, '.', -1))
                         )
                   , 'print.'
                   , SUBSTRING_INDEX(Column, '.', -1)
                   )
WHERE Column LIKE '%.%'
0 голосов
/ 26 января 2012

Возможно, используйте str_replace, чтобы заменить commands.firm.pm на commands.firm.pm.print

$original_str = "commands.firm.pm.15hhkl15k0fak1";
str_replace("commands.firm.pm", "commands.firm.pm.print", $original_str);

, должно появиться: commands.firm.pm.print.15hhkl15k0fak1

, а затем обновить таблицу с новым значением ... Каксделать все это в одном запросе (получить значение столбца и сделать обновление), я не знаю.Все, о чем я могу думать, это то, что вы получаете значение столбца в одном запросе, делаете вышеуказанную замену, а затем обновляете столбец новым значением во втором запросе.

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