MySQL обновляет значения, которые заканчиваются другим окончанием - PullRequest
0 голосов
/ 22 марта 2019

Если у меня есть таблица с результатами, подобными этим:

0001400OL
0578400OL
354085OL
48679OL

и если я хочу заменить последние символы, которые заканчиваются на 400OL на ABC.Как бы я это сделал?

это оператор выбора, который у меня есть, чтобы показать все значения, которые заканчиваются на 400OL, вероятно, никому не нужны:

select pcode from innerb where pcode like '%400OL';

это ожидаемый результат:

0001ABC
0578ABC
354085OL
48679OL

Ответы [ 3 ]

0 голосов
/ 22 марта 2019

Я верю, что это сделает это:

UPDATE innerb
SET pcode = REPLACE(pcode, '400OL', 'ABC')
WHERE pcode LIKE '%400OL';
0 голосов
/ 22 марта 2019

Не используйте REPLACE()!Вместо этого:

UPDATE innerb
    SET pcode = CONCAT(LEFT(pcode, LENGTH(pcode) - 5), 'ABC')
    WHERE pcode LIKE '%400OL';

Проблема с REPLACE() состоит в том, что она заменяет все вхождений искомой строки.Вы хотите заменить только последний, поэтому измените только этот.

0 голосов
/ 22 марта 2019

То, что вы ищете, это функция REPLACE , тогда вы должны сделать что-то вроде этого:

SELECT REPLACE(pcode, '400OL', 'ABC') FROM innerb WHERE pcode like '%400OL';

Например, если вы хотите обновить эти значения, соответствующие вашему предложению WHERE, выполните следующую инструкцию:

UPDATE innerb 
SET pcode = REPLACE(pcode, '400OL', 'ABC') 
WHERE pcode like '%400OL';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...