DB2 Случай, когда нужно посчитать цифры значения - PullRequest
0 голосов
/ 07 февраля 2020

Мне нужно написать случай, когда утверждение в db2. Я новичок, поэтому у меня нет большого опыта, извините за это.

У меня есть столбец с разными номерами вызовов, каждый номер вызова должен содержать 7 цифр. (например, AR78HJ8)

Мне нужно, когда значение пустое или "_______", (7 раз _) , результат будет 0,

и когда я иметь номер вызова из семи цифр (но не 7 раз _), чтобы результат был равен 1.

Также могут быть случаи, когда номер вызова составляет 8, 6 или любой другой, отличный от 7 цифр. В этом случае я хочу показать сам номер вызова.

То, что я написал до сих пор, это

    case when ab.call_number = '' then '0'
         when ab.call_number = '_______' then '0'                                                                                                       
         else '1' 
         end as "Call number",

, но в этом случае я предполагаю, что все остальные номера вызовов всегда состоят из 7 цифр.

Что мне делать?

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 07 февраля 2020

Попробуйте как есть:

WITH TAB (CALL) AS 
(
VALUES 
  '1234567'
, ''
, '       '
, 'AR78HJ8'
, '12345678'
)
SELECT CALL
, 
CASE
  WHEN CALL = '' THEN '0'
  WHEN LENGTH(TRANSLATE(CALL, '', '0123456789', '')) = 0 AND LENGTH(CALL) = 7 THEN '1'
  ELSE CALL
END AS "Call number"
FROM TAB;

Результат:

|CALL    |Call number|
|--------|-----------|
|1234567 |1          |
|        |0          |
|        |0          |
|AR78HJ8 |AR78HJ8    |
|12345678|12345678   |
...