Преобразование строкового значения в количество дней - PullRequest
1 голос
/ 10 мая 2019

У меня есть данные в столбце со значениями, такими как 4w4d, 1w0d, 2w5d, 0w6d.

Как я могу использовать эти данные, чтобы получить количество дней?

Create Table #temp
(
   Data char(4),
   ExpectedResult int
)
insert into #temp
(
    Data,
    ExpectedResult
)
select '4w4d','32'
union all
select '1w0d','7'
union all
select '2w5d','19'
union all
select '0w6d','6'
union all
select '0w5d','5'
union all
select '0w1d','1'
union all
select '0w3d','3'
union all
select '1w6d','13'

Ответы [ 2 ]

2 голосов
/ 10 мая 2019

Вам необходимо проанализировать компонент недели и компонент дня, а затем преобразовать их в число дней. Вот один из способов сделать это:

-- Find the weeks, multiple by 7
convert(int, substring([Data], 1, charindex('w',[Data])-1))*7
-- Find the days and add on
+ convert(int, substring([Data], charindex('w',[Data])+1, charindex('d',[Data])-charindex('w',[Data])-1))
1 голос
/ 10 мая 2019

Вы можете проанализировать строку, используя строковые операции:

select convert(int, left(data, 1)) * 7 + convert(int, substring(data, 3, 1))

Здесь - это скрипта db <> с вашими образцами данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...