Как получить количество дней из этого строкового поля? - PullRequest
0 голосов
/ 12 июля 2019

У меня есть таблица с указанием дней обслуживания в неделю для клиентов. В настоящее время он находится в странном строковом формате, и мне нужен способ преобразовать его в число.

M T W Th F S Su
M   W      S
    W    F   Su
  T   Th   S Su
      Th

Так что ожидаемые результаты от этого должны быть

7
3
3
4
1

Я пытался использовать обрезку, затем подсчитывал пробелы, но проблема в том, что между символами может быть несколько пробелов. Количество возможных различных комбинаций также затрудняет использование функции декодирования.

Ответы [ 3 ]

2 голосов
/ 12 июля 2019

Oracle поддерживает regexp_count(), поэтому вы можете сделать:

select regexp_count('    W    F   Su', '[^ ]+')
from dual
0 голосов
/ 12 июля 2019

Другое решение: удалите все пробелы, u и h и проверьте длину оставшейся строки:

select length(translate(mycol, '. hu', '.')) from dual

Это вернет NULL, если день не установлен.

0 голосов
/ 12 июля 2019

Удалить пробелы, заменить Th на T и Su на S и подсчитать количество символов:

select length(replace(replace(replace(yourcolumn, ' ', ''), 'Th', 'T'), 'Su', 'S'))
from yourtable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...