如何在SQL查询中替换指定主机名并删除.SERVIZI.INPS后缀?
在SQL查询中同时实现特定主机名替换与后缀删除
当然可以在同一查询里完成这两个操作,只需要在SELECT子句中嵌套字符串处理逻辑即可。修改后的SQL语句如下:
SELECT DISTINCT REPLACE( CASE WHEN upper("Local_Hostname_U") = 'EAP-WEBSERVICES.WEB.INPS' THEN 'WEBINPS59' ELSE upper("Local_Hostname_U") END, '.SERVIZI.INPS', '' ) AS Cleaned_Hostname FROM "Services_Inventory_610" WHERE CASE WHEN "TMZDIFF"=-3600 THEN ("Interval_Begin_Time">=1230110230000000 AND "Interval_Begin_Time"<1230111230000000) WHEN "TMZDIFF"=-7200 THEN ("Interval_Begin_Time">=12301100000000 AND "Interval_Begin_Time"<1230110230000000) END ORDER BY Cleaned_Hostname;
逻辑说明:
- 特定主机名替换:通过
CASE语句匹配大写后的Local_Hostname_U字段,当值为EAP-WEBSERVICES.WEB.INPS时,直接替换为WEBINPS59,其他值保持原大写形式。 - 后缀删除:用
REPLACE函数将第一步处理后的结果中所有.SERVIZI.INPS字符串替换为空,实现后缀删除。 - 保留原查询的
DISTINCT去重、WHERE条件过滤和排序逻辑。
处理后的预期结果:
- CUSTMON03
- WEBINPS59
- JAVAZAPPWS-P01
- JAVAZAPPWS-P02
- JAVAZAPPWS-P03
- JAVAZAPPWS-P04
- JAVAZAPPWS-P05
- JAVAZAPPWS-P06
- JAVAZAPPWS-P07
- JAVAZAPPWS-P08
- LHEWBSWAS01
- LHEWBSWAS02
- LHEWBSWAS03
- LHEWBSWAS04
- LHEWBSWAS05
- LHEWBSWAS06
- LHEWBSWAS07
- LHEWBSWAS08
- LHEWBSWAS09
- LHEWBSWAS10
- LHEWBSWAS11
- LHEWBSWAS12
- WEBINPS120
- WEBINPS52
- WEBINPS53
- WEBINPS54
- WEBINPS55
- WEBINPS56
- WEBINPS58
- WEBINPS62
内容的提问来源于stack exchange,提问作者Fabio
相关产品推荐
相关产品推荐

