如何从此字符串字段获取天数?

时间:2019-07-11 21:16:57

标签: sql oracle

我有一张表,其中包含每周为客户提供服务的日期。目前它是一种奇怪的字符串格式,我需要一种方法将其转换为数字。

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

因此,预期结果应该是

7
3
3
4
1

我尝试使用修剪然后计算空格,但是问题是字符之间可能有多个空格。可能的不同组合数量也使使用解码功能变得困难。

3 个答案:

答案 0 :(得分:2)

Oracle支持regexp_count(),因此您可以这样做:

select regexp_count('    W    F   Su', '[^ ]+')
from dual

答案 1 :(得分:0)

删除空格,将Th替换为T,将Su替换为S,然后计算字符数:

select length(replace(replace(replace(yourcolumn, ' ', ''), 'Th', 'T'), 'Su', 'S'))
from yourtable

答案 2 :(得分:0)

另一种解决方案:删除所有空格uh并检查剩余字符串的长度:

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

如果未设置日期,则返回NULL。