Как сделать мой код более эффективным (новичок :) - PullRequest
0 голосов
/ 29 декабря 2018

Может кто-нибудь предложить более короткий код, который делает то же самое?

CASE 
WHEN  {location} LIKE '%00' OR  {location} LIKE  '%010' OR  {location} LIKE '%011' OR  {location} LIKE '%012' OR  {location} LIKE '%013' THEN '1'
WHEN  {location} LIKE '%38' OR  {location} LIKE '%039' OR  {location} LIKE '%040' OR  {location} LIKE '%041' OR  {location} LIKE '%042' OR  {location} LIKE '%043' OR  {location} LIKE '%044' OR  {location} LIKE '%046' OR  {location} LIKE '%047' THEN '2'
ELSE '3' 
END

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Если вы используете базу данных, которая поддерживает регулярные выражения, вы можете значительно упростить это.Например, в MySQL:

(CASE WHEN  {location} REGEXP '00$|010$|011$|012$|013$' THEN '1'
      WHEN  {location} REGEXP '38$|039$|040$|041$|042$|043$|044$|046$|047$' THEN '2'
      ELSE '3' 
 END)
0 голосов
/ 29 декабря 2018

вместо нескольких ИЛИ вы можете попробовать использовать интервал

CASE when substr({location}, -2) ='00' 
  or cast(substr({location}, -2)) AS UNSIGNED )between 10 and 13 then '1'
    when cast(substr({location}, -2)) AS UNSIGNED) between 38 and 47 then '2'
  else '3'
end  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...