【发布时间】:2017-03-31 13:34:25
【问题描述】:
我有以下语句,它在 Tableau 中运行良好。
但是,我想将其转换为 SQL 并将所有结果保存到一个临时列名中。
有人知道我该怎么做吗?
基本上,以下内容会从域名中删除 .com/.net 等。
然后我有另一个删除子域的脚本(从第一个 . 到结果值左侧的所有内容)。
如果有人可以帮助我解决这些问题,那将是不可思议的,因为我不确定如何在 SQL 中执行此操作
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
【问题讨论】:
-
您应该有一个表,其中包含要从
[domain]列中删除的每个.yyy,而不是编写巨大的CASE表达式 -
请用您正在使用的数据库标记您的问题。
-
您还可以将所有长度相同的(3、4、5 和 6)组合在一起。
标签: sql if-statement switch-statement case