简体   繁体   English

SQL 获取字符串和特殊字符之间的字符

[英]SQL get characters in between string and special character

I am trying to convert the format of work weeks.我正在尝试转换工作周的格式。 The current format looks like this:当前格式如下所示:

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

I want to convert format to:我想将格式转换为:

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

Here is what I have tried:这是我尝试过的:

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

workweek outcome: 202020.

I've also tried我也试过

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

workweek outcome: 2020w20

Thank you in advance先感谢您

If your strings always follow this fixed format, then substring() is just enough:如果您的字符串始终遵循这种固定格式,那么substring()就足够了:

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

Demo on DB Fiddle : 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

You could replace "ww" and get everything left to the 6th character您可以replace “ww”并将所有内容left第 6 个字符

  left(replace(workweek,'ww',''),6)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM