SQL как предотвратить маскирование с помощью оператора like - PullRequest
0 голосов
/ 29 апреля 2020

Я имею дело с проблемой маскировки с оператором 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, как мне этого избежать вопрос маскировки?

Спасибо!

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

просто напишите регистр в таком порядке.

  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
1 голос
/ 29 апреля 2020

Вы ставите условия в лучшем порядке:

(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

Это должно помочь вам убедиться в наличии нет «маскирующих» конфликтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...