首页 > 解决方案 > 如果包含新变量 SQL 的语句

问题描述

需要帮助更正我的 if 语句代码以创建新变量。

这是为了帮助清理我的业务项目的数据集。我想在一个列中搜索多个值,如果该列包含任何这些值,它将将该值添加到另一列。自从我在学校学习 sql 以来已经有一段时间了,我的代码需要一些帮助。

我目前正在使用 Domo/MySQL 工具编写代码。本质上,我想在 url 中找到一个广告商名称,并将该广告商返回到一个新列中,并将其添加到数据集中。

我已经尝试了一些东西,但我不确定该使用什么。

Select `Page`
from `google_analytics_automation_test`
ALTER TABLE `google_analytics_automation_test` 
ADD COLUMN Advertiser varchar(255) NOT NULL;

alter table `google_analytics_automation_test`
Add Advertiser AS
(CASE WHEN `Page` LIKE '%Aloxxi%' THEN Advertiser IS 'Aloxxi'
  WHEN `Page` LIKE '%Alfaparf%' THEN Advertiser IS 'AlfaParf'
 ELSE 'NA'
)

END AS 'Advertiser'
FROM `google_analytics_automation_test`;

我希望代码搜索一列并返回广告商名称,因为我给它一个所有广告商的列表。然后将该新列添加到我的名为 x 的数据集中。

如果 col.a 包含 apple 那么 col.b 是 Apple 如果 col.a 包含 novalash 那么 col.b 是 Nova Lash

前任:

 Col A                                                       Col B
 www.google.com/apple                                         Apple
 www.modernsalon.com/set-of-novalash-eyelash-extensions       Nova Lash

标签: mysqldomo

解决方案


查看 CASE 的语法,您在其中有很多不必要的 IS、AS 和 [columnname]。

正确的语法——

ALTER TABLE google_analytics_automation_test 
ADD COLUMN Advertiser varchar(255) AS (
    CASE WHEN Page LIKE '%Aloxxi%' THEN 'Aloxxi' 
    WHEN Page LIKE '%Alfaparf%' THEN 'AlfaParf' 
    ELSE 'NA' 
    END
);

推荐阅读