SQL如何防止被like语句屏蔽
Posted
技术标签:
【中文标题】SQL如何防止被like语句屏蔽【英文标题】:SQL how to prevent masking by like statement 【发布时间】:2020-04-29 16:44:28 【问题描述】:我正在处理 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 ADDRESS 而 OP 将屏蔽 OP HH,我应该如何避免这个屏蔽问题?
谢谢!
【问题讨论】:
【参考方案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
这应该可以帮助您确保没有“屏蔽”冲突。
【讨论】:
是否有软件可以按长度对它们进行排名...我正在定义接近 50 个新名称。 您可以将when
语句放在电子表格中并对列进行排序。【参考方案2】:
按这个顺序写case就行了。
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
【讨论】:
以上是关于SQL如何防止被like语句屏蔽的主要内容,如果未能解决你的问题,请参考以下文章