首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果每个字符串不同,如何使用MS Access中的SQL从字符串中提取特定的关键字?

如果每个字符串不同,如何使用MS Access中的SQL从字符串中提取特定的关键字?
EN

Stack Overflow用户
提问于 2019-07-03 22:05:21
回答 3查看 445关注 0票数 0

我需要从包含不同格式的多个关键字的列中提取日期。

代表.该列看起来像-

生活方式日报FY18 WK4.xlsx

出口每日FY18 6月WK 1.xlsx

出口每日FY19 3月WK 1 VS2.xlsx

生活方式日报FY20 7月WK 2A.xlsx

我正在尝试将关键字提取到一个新的列中,使其看起来像-

FY18 APR WK 4

FY18 6月WK 1

FY19 MAR WK1

FY20 7月2日

我试过使用右函数和左函数,但由于格式不一致,它们不能很好地工作。

EN

回答 3

Stack Overflow用户

发布于 2019-07-03 22:26:34

这应该适用于MySQL 8.0或更高版本。有关的更多信息,请参见REGEXP_INSTR

代码语言:javascript
复制
UPDATE myTable
SET newString = SUBSTRING(oldString, (REGEXP_INSTR([oldString], '%FY[0-9][0-9] [A-Z][A-Z][A-Z] WK [0-9]%')),13)
票数 0
EN

Stack Overflow用户

发布于 2019-07-04 00:31:18

在Access SQL中,可以将VBA函数插入查询中。您的示例似乎遵循了一种模式,因此您可以尝试这样的方法。创建一个模块或将这10行插入到现有模块中:

代码语言:javascript
复制
Function ExtractedValues(strValues As String)
Dim arValues
Dim strReturn As String
    arValues = Split(strValues, " ")
    For i = 2 To 5
        strReturn = strReturn & arValues(i) & IIf(i < 5, " ", "")
    Next
    strReturn = Replace(strReturn, ".xlsx", "")
ExtractedValues = strReturn
End Function

然后,在查询设计器中,选择表(和任何其他字段),并添加一个具有此值的字段(将MyDateField更改为上面提到的原始数据字段):

代码语言:javascript
复制
MyExtractedDates: ExtractedValues([MyDataField])

根据提供的示例,结果应该是您所要寻找的结果。

票数 0
EN

Stack Overflow用户

发布于 2019-07-04 08:12:40

只有一行代码的助手函数可以做到这一点:

代码语言:javascript
复制
Public Function GetDatePart(ByVal Text As String) As String
    GetDatePart = Split(Split(Text, " ", 3)(2), ".")(0)
End Function

编辑

代码语言:javascript
复制
Public Function GetDatePart(ByVal Text As String) As String

    Dim Parts() As String
    Dim Part1   As String

    Part1 = Split(Split(Text, " ", 3)(2), ".")(0)
    Parts = Split(Part1, "WK ")

    GetDatePart = Parts(0) & "WK " & Left(Parts(1), 1)

End Function
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56878469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档