SQL如何通过类似的语句防止屏蔽

问题描述 投票:0回答:2

我正在使用like语句处理掩盖问题,例如:

   case
   when name like 'PO_UTI_%' then 'UTI' 
   when name like 'PO_UTI_ADR_%' then 'UTI ADDRESS'
   when name like 'PO_OP_%' then 'OP' 
   when name like 'PO_OP_HH_%' then 'OP HH' 
   end newname

新名称UTI将掩盖UTI地址,OP将掩盖OP HH,如何避免此掩盖问题?

谢谢!

mysql sql hive hiveql
2个回答
1
投票

您将条件安排得更好:

(case when name like 'PO_UTI_ADR_%' then 'UTI ADDRESS'
      when name like 'PO_UTI_%' then 'UTI' 
      when name like 'PO_OP_HH_%' then 'OP HH' 
      when name like 'PO_OP_%' then 'OP' 
 end) as newname

实际上,最好按长度排序:

(case when name like 'PO_UTI_ADR_%' then 'UTI ADDRESS'
      when name like 'PO_OP_HH_%' then 'OP HH' 
      when name like 'PO_UTI_%' then 'UTI' 
      when name like 'PO_OP_%' then 'OP' 
 end) as newname

这应该有助于您确保没有“掩盖”冲突。


1
投票

只需按此顺序书写大小写。

  case
   when name like 'PO_UTI_ADR_%' then 'UTI ADDRESS'
   when name like 'PO_UTI_%' then 'UTI'
   when name like 'PO_OP_HH_%' then 'OP HH'  
   when name like 'PO_OP_%' then 'OP' 
   end newname
© www.soinside.com 2019 - 2024. All rights reserved.