簡體   English   中英

Mysql:創建新字段,從另一列添加多個子字符串

[英]Mysql: Create new field adding multiple substrings from another column

**我需要創建一個新列,從另一列中搜索多個子字符串。 請參閱下面的鏈接中的示例查看示例數據

我能夠查找多個子字符串,但無法在同一新列下輸入我所找到的子字符串

這是我的代碼。 它不允許我在同一列下添加子字符串。 它只是創建了四個具有相同名稱的列,並在每個這些列下輸入了子字符串

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%'

尚不清楚您要獲得什么以及為什么要這樣做,但這是我對您要實現的目標的猜測:

https://www.db-fiddle.com/f/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%'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM