【问题标题】:SQL get characters in between string and special characterSQL获取字符串和特殊字符之间的字符
【发布时间】:2020-08-03 23:18:45
【问题描述】:

我正在尝试转换工作周的格式。当前格式如下所示:

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.

我也试过

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

workweek outcome: 2020w20

提前谢谢你

【问题讨论】:

  • 第三行的结果不应该是201905而不是202005吗?
  • 用您正在使用的数据库标记您的问题。

标签: sql sql-server substring


【解决方案1】:

如果您的字符串始终遵循这种固定格式,那么substring() 就足够了:

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

Demo on 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);
工作周|结果 :--------- | :----- 2020ww20.5 | 202020 2020ww18.3 | 202018 2019ww05.2 | 201905

【讨论】:

    【解决方案2】:

    你可以 replace "ww" 得到所有 left 到第 6 个字符

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 2016-02-12
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多