ВЫБЕРИТЕ ЗАМЕНИТЬ несколько случаев одинакового значения в MySQL - PullRequest
0 голосов
/ 26 февраля 2019

Я знаю, что SELECT REPLACE может заменить один случай строки, но я пытаюсь заменить несколько случаев одной строкой, и я не нашел пример того, как это сделать.

У меня естьТаблица:

+--------------+
| station_name |
+--------------+
| WABC-FM      |
| WXYZ-G2      |
| WWWW-H2      |
| WWAS-A2      |
| WFRE-A3      |
| WRES-AM      |
+--------------+

То, что я хотел бы немного сложнее.Я буду использовать обычный SELECT REPLACE, чтобы попытаться объяснить, что я ищу.

По сути, каждый экземпляр G2 или H2 необходимо заменить на FM, а каждый случай A2 или A3 - на AM.

Так что-то вроде SELECT REPLACE(station_name, ['G2', 'H2'], 'FM') в сочетании с другим SELECT REPLACE(station_name, ['A2', 'A3'], 'AM')

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете связать четыре вызова с REPLACE:

SELECT
    REPLACE(
        REPLACE(
            REPLACE(
                REPLACE(station_name, 'G2', 'FM'), 'H2', 'FM'),
                    'A2', 'AM'), 'A3', 'AM')
FROM yourTable;

Если вы используете MySQL 8+, вы можете использовать REGEXP_REPLACE, что потребует только два вызова вместо четырех:

SELECT
    REGEXP_REPLACE(
        REGEXP_REPLACE(station_name, '[GH]2', 'FM'), 'A[23]', 'AM')
FROM yourTable;
...