#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%';
Или, возможно, символы из расширенного набора символов.