Mysql: создать новое поле, добавив несколько подстрок из другого столбца - PullRequest
0 голосов
/ 19 апреля 2019

** Мне нужно создать новый столбец, поиск нескольких подстрок из другого столбца.см. пример по ссылке ниже см. пример данных

Мне удалось найти несколько подстрок, но я не смог ввести подстроки, расположенные в том же новом столбце

вот мой код.это не позволяет мне добавлять подстроки под одним и тем же столбцом.он просто создал четыре столбца с одинаковым именем, и под каждым из этих столбцов были введены подстроки

SELECT 
  column a, 
  substring(column a, locate('playtstation', campaign a), length('playtstation')) as column b,
 substring(column a, locate('vr', campaign a), length('vr')) as column b,
 substring(column a, locate('dualshock', campaign a), length('dualshock')) as column b,
 substring(column a, locate('final fantasy', campaign a), length('final fantasy')) as column b,

FROM myTable 
WHERE name LIKE '%playstation%' OR '%vr%' OR '%dualshock%'OR '%final fantasy%'

1 Ответ

1 голос
/ 19 апреля 2019

Не очень понятно, что вы пытаетесь получить и почему, но вот мое предположение о том, чего вы пытаетесь достичь:

https://www.db -fiddle.com / ж / 5HxNgCTf8TmAV9JWzQyGDd / 2

 SELECT 
      campaign a, 
      IF(LOCATE('playstation', campaign), 'playtstation',
         IF(locate('vr', campaign), 'vr',
            IF(locate('dualshock', campaign), 'dualshock',
               IF(locate('final fantasy', campaign), 'final fantasy', NULL)
            )
         )
      ) as b
    FROM mytable 
    WHERE campaign LIKE '%playstation%' 
          OR campaign LIKE '%vr%' 
          OR campaign LIKE '%dualshock%'
          OR campaign LIKE '%final fantasy%'

Как вы можете видеть из моей скрипки, вы можете получить тот же результат с помощью WHERE, например:

WHERE campaign LIKE 'campaign-sony%'

И еще один трюк, если вы уверены в структуре campaign:

SUBSTRING_INDEX(campaign, '-', -1) as b

И тогда у вас есть довольно хороший и удобный для чтения и понятный запрос:

SELECT 
  campaign a, 
  SUBSTRING_INDEX(campaign, '-', -1) as b
FROM mytable 
WHERE campaign LIKE 'campaign-sony%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...