sql - 提取具有可变开始和长度的子字符串
问题描述
我有一个来自可怕数据库的字段,其中每个值都是一个字符串,例如
现场阶段从“Kortec 销售周期/3 提案”更改为“Kortec 销售周期/推迟”
或者
现场阶段从“Kortec 销售周期/5 次评估”更改为“Kortec 销售周期/6 实施”
我需要从中创建 2 个计算列,分别命名为“From”和“To”,两个值在引号内或它们以数字开头(除“Postponed”外的所有 7 个阶段都以数字开头)。
这是我最需要的“To”字段。我尝试过使用Instr()
、InStrRev()
、Left
和Mid
函数,但到目前为止还没有任何乐趣。我也在网上搜索过类似的问题,但没有遇到任何这样的文本处理要求。
任何人都知道我应该如何解决这个问题?
我(想我)得到的最接近的是
SELECT RIGHT([OppMovs (Base)].[DETAILS], InStrRev([OppMovs (Base)].[DETAILS], 'to')-3)
FROM [OppMovs (Base)]
解决方案
拆分可用于轻松提取这些:
s = "Field Stage changed from ""Kortec Sales Cycle/3 Proposal"" to ""Kortec Sales Cycle/Postponed""
? s
Field Stage changed from "Kortec Sales Cycle/3 Proposal" to "Kortec Sales Cycle/Postponed"
? Split(Split(s, "from """)(1), """")(0)
Kortec Sales Cycle/3 Proposal
? Split(Split(s, "to """)(1), """")(0)
Kortec Sales Cycle/Postponed
但是,要在查询中使用,您必须创建小的帮助函数,例如:
Public Function GetFrom(ByVal Value As String) As String
GetFrom = Split(Split(Value, "from """)(1), """")(0)
End Function
Public Function GetTo(ByVal Value As String) As String
GetTo = Split(Split(Value, "to """)(1), """")(0)
End Function
推荐阅读
- html - 导航栏的菜单下拉菜单未打开
- amazon-web-services - 使用 NGINX 和 AWS Elastic Beanstalk 配置 CORS
- powershell - 即使文件夹存在,Powershell Copy-Item 也不会复制
- putty - Filezilla 无法添加密钥文件 SFTP
- css - Devextreme DataGrid 覆盖样式 - 删除单元格填充
- kotlin - 令牌值 744 处的意外字符 0x645
- angularjs - 将 AngularJS 迁移到 Angular 8
- python - 直接在 contextvars.Context 中设置 var
- powershell - 选择 Visio 绘图的所有元素
- android - 将 Google Drive 文件解析为自定义对象