我有一张表,其中包含每周为客户提供服务的日期。目前它是一种奇怪的字符串格式,我需要一种方法将其转换为数字。
M T W Th F S Su
M W S
W F Su
T Th S Su
Th
因此,预期结果应该是
7
3
3
4
1
我尝试使用修剪然后计算空格,但是问题是字符之间可能有多个空格。可能的不同组合数量也使使用解码功能变得困难。
答案 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)
另一种解决方案:删除所有空格u
和h
并检查剩余字符串的长度:
select length(translate(mycol, '. hu', '.')) from dual
如果未设置日期,则返回NULL。