Замена определенных символов строки в столбце (MySQL)

#mysql #sql

#mysql #sql

Вопрос:

У меня есть таблица в базе данных MySQL, которая содержит столбец «имя» со значениями, такими как:

  • SDP3973455/1
  • 101390375/2
  • SDP4608677
  • 105859492/1
  • 104295947

Как вы можете видеть, некоторые значения имеют символы ‘SPD’ впереди, а некоторые значения имеют ‘/ 1 или / 2’ в конце строки. Я хочу сохранить только числа между этими символами. Таким образом, ‘SDP3973455 / 1’ будет заменен на ‘3973455’, а ‘105859492/1’ будет заменен на ‘105859492’.

Я попытался использовать следующий запрос, но я получаю это сообщение ‘0 строк, затронутых совпадением строк: 2171368 Изменено: 0 Предупреждений: 0’:

 UPDATE myTable
SET name = REPLACE(name, 'SDP', '');
 

Если кто-нибудь может указать мне правильное направление, это было бы очень ценно. Также, если вы можете выяснить, как удалить ‘/ 1’ или ‘/ 2’, это было бы замечательно.

Комментарии:

1. Это либо SDP или SPD . Пожалуйста, исправьте, где это уместно.

2. Если ваш MySQL версии 8 (или выше) рассмотрите возможность использования регулярных выражений .

3. Попробуйте выполнить экранирование name с помощью обратных меток, поскольку это ключевое слово MySQL .

Ответ №1:

Это предполагает, что в вашем столбце нет 'SPD' .

Одной из проблем могут быть промежуточные символы. Предположительно, этот запрос не возвращает строк:

 select t.*
from myTable t
where name like '%SPD%';
 

Затем вы могли бы попробовать более общий шаблон:

 select t.*
from myTable t
where name like '%S%P%D%';
 

Или, возможно, символы из расширенного набора символов.