首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Case语句-如何执行

SQL Case语句-如何执行
EN

Stack Overflow用户
提问于 2017-03-31 13:34:25
回答 5查看 67关注 0票数 0

我有下面的声明,在Tableau很好地工作。

但是,我希望将其转换为SQL,并将所有结果保存为临时列名。

有人知道我会怎么做吗?

本质上,下面删除了..net等.来自域名。

然后,我有另一个脚本来移除子域(从第一个域开始的所有内容)。在结果值的左边)。

如果有人能帮我解决这些问题,那就太不可思议了,因为我不知道如何在SQL中实现这一点。

代码语言:javascript
复制
IF CONTAINS([domain], ".co.uk") then LEFT([domain],LEN([domain])-6)
elseif  CONTAINS([domain], ".com") then LEFT([domain],LEN([domain])-4)
elseif  CONTAINS([domain], ".net") then LEFT([domain],LEN([domain])-4)
elseif  CONTAINS([domain], ".org") then LEFT([domain],LEN([domain])-4)
elseif  CONTAINS([domain], ".biz") then LEFT([domain],LEN([domain])-4)
elseif  CONTAINS([domain], ".edu") then LEFT([domain],LEN([domain])-4)
elseif  CONTAINS([domain], ".ac") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".gov") then LEFT([domain],LEN([domain])-4)
elseif  CONTAINS([domain], ".biz") then LEFT([domain],LEN([domain])-4)
elseif  CONTAINS([domain], ".co") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".ca") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".io") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".in") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".it") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".uk") then LEFT([domain],LEN([domain])- 3)
elseif  CONTAINS([domain], ".ru") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".ie") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".tv") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".info") then LEFT([domain],LEN([domain])-5)
elseif  CONTAINS([domain], ".fr") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".es") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".pl") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".is") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".hu") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".xxx") then LEFT([domain],LEN([domain])-4)
elseif  CONTAINS([domain], ".nl") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".ro") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".xyz") then LEFT([domain],LEN([domain])-4)
elseif  CONTAINS([domain], ".no") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".eu") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".me") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".cz") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".fi") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".nl") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".al") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".am") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".af") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".st") then LEFT([domain],LEN([domain])-3)
elseif  CONTAINS([domain], ".cn") then LEFT([domain],LEN([domain])-3)
else [domain]
end
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-03-31 13:40:11

它非常类似于您现在拥有的内容,但是使用like而不是contains:

代码语言:javascript
复制
IF domain like '%.co.uk' THEN left(domain,len(domain)-6)
IF domain like '%.com' THEN left(domain,len(domain)-4)
...
ELSE domain END AS stripped_domain
票数 0
EN

Stack Overflow用户

发布于 2017-03-31 13:59:43

如果SQL Server,可能是这样的

代码语言:javascript
复制
Declare @YourTable table (domain varchar(100))
Insert Into @YourTable values
('somedomain.org'),
('somedomain.net'),
('anotherdomain.az'),
('nodomain'),
('somedomain.com?Param=1')

Select A.*
      ,NoDomain = left(domain,len(domain)-charindex('.',reverse(domain)))
 From  @YourTable A

返回

代码语言:javascript
复制
domain                  NoDomain
somedomain.org          somedomain
somedomain.net          somedomain
anotherdomain.az        anotherdomain
nodomain                nodomain
somedomain.com?Param=1  somedomain
票数 2
EN

Stack Overflow用户

发布于 2017-03-31 13:51:24

如果可以用例,则...意味着必须正确地对代码进行寻址。

代码语言:javascript
复制
select   CASE domain
            WHEN  domain like "%.co.uk" THEN LEFT(domain,LENGTH(domain)-6)
            WHEN  domain LIKE "%. com"  THEN LEFT(domain,LENGTH(domain)-4)
            WHEN  domain LIKE "%. net"  THEN LEFT(domain,LENGTH(domain)-4)
            .....
            WHEN domain LIKE "%.co" THEN LEFT(domain,LENGTH(domain)-3)
            WHEN domain LIKE "%.ca" THEN LEFT(domain,LENGTH(domain)-3)
            .... 
          END 
FROM MY_TABLE
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43142072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档