sql - 如何用新数据更新 SQL 中的部分字符串
问题描述
我有类似Descr
=的字符串ANY TEXT 31-Jan-2019 to 30-Jan-2020
。是否可以用文本中的新日期替换这些日期?
新数据:
CycleBeginDate = '01/01/2020'
CycleEndDate = '12/31/2022'
Update Desc should be `ANY TEXT 01-Jan-2020 to 31-Dec-2022`
解决方案
这应该可以解决问题,并且为了好玩,我对其进行了设置,以便即使日期出现在字符串中的哪个位置也能正常工作。
DECLARE @string VARCHAR(1000) = 'Blah, blah... yadda, yadda... 31-Jan-2019 to 30-Jan-2020!!!'
--'Descr = ANY TEXT 31-Jan-2019 to 30-Jan-2020';
DECLARE @CycleBeginDate DATE = '01/01/2020';
DECLARE @CycleEndDate DATE = '12/31/2022';
SELECT NewString = STUFF(STUFF(@string,pos.D1,11,f.D1),pos.D1+15,11,f.D2)
FROM (VALUES('%[0-9][0-9]-[A-Z][a-z][a-z]-2[0-9][0-9][0-9]%',
REPLACE(CONVERT(VARCHAR(11),@CycleBeginDate,106),' ','-'),
REPLACE(CONVERT(VARCHAR(11),@CycleEndDate,106),' ','-'))) AS f(DPat,D1,D2)
CROSS APPLY (VALUES(PATINDEX(f.DPat,@string))) AS pos(D1);
回报:
NewString
------------------------------------------------------------
Blah, blah... yadda, yadda... 01-Jan-2020 to 31-Dec-2022!!!
推荐阅读
- python - Python for 循环在用户定义的函数中不起作用
- c# - Nuget 库的多运行时目标
- excel - EPPLUS - 如何更改图表高度?
- angularjs - 当后台浏览器选项卡时,Angular / AngularJS升级应用程序无响应
- reactjs - Firebase 数据库抛出“错误:Reference.set 失败”
- c++ - 在 ANTLR4 的 Lexer 中切换流
- javascript - 如何在网站中更改 google vr 全屏图标的背景
- .net - 如何抑制我的事件处理函数发出不需要的文本?
- azure - Azure AD B2C 来宾用户无法登录
- visual-studio - 如何使用 .net 安装程序文件