SQL получить символы между строкой и специальным символом - PullRequest
0 голосов
/ 04 августа 2020

Пытаюсь преобразовать формат рабочих недель. Текущий формат выглядит так:

workweek
------------
2020ww20.5
2020ww18.3
2019ww05.2

Я хочу преобразовать формат в:

workweek
------------
202020
202018
202005

Вот то, что я пробовал:

SUBSTRING(workweek,
    CHARINDEX('ww',workweek)+2,
    CHARINDEX('.',workweek)- CHARINDEX('ww',workweek)-1)

workweek outcome: 202020.

I ' еще пробовали

SUBSTRING(workweek,
    PATINDEX('%ww%', workweek)+1,
    PATINDEX('%.%', workweek) - PATINDEX('%ww%', workweek))

workweek outcome: 2020w20

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Вы можете replace "ww" и получить все left до 6-го символа

  left(replace(workweek,'ww',''),6)
0 голосов
/ 04 августа 2020

Если ваши строки всегда следуют этому фиксированному формату, тогда substring() будет достаточно:

concat(
    substring(workweek, 1, 4),
    substring(workweek, 7, 2)
)

Демо на DB Fiddle :

select workweek, concat(substring(workweek, 1, 4), substring(workweek, 7, 2)) result
from (values ('2020ww20.5'), ('2020ww18.3'), ('2019ww05.2')) as t(workweek);
workweek   | result
:--------- | :-----
2020ww20.5 | 202020
2020ww18.3 | 202018
2019ww05.2 | 201905
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...