我需要从包含不同格式的多个关键字的列中提取日期。
代表.该列看起来像-
生活方式日报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日
我试过使用右函数和左函数,但由于格式不一致,它们不能很好地工作。
发布于 2019-07-03 22:26:34
这应该适用于MySQL 8.0或更高版本。有关这的更多信息,请参见REGEXP_INSTR
UPDATE myTable
SET newString = SUBSTRING(oldString, (REGEXP_INSTR([oldString], '%FY[0-9][0-9] [A-Z][A-Z][A-Z] WK [0-9]%')),13)发布于 2019-07-04 00:31:18
在Access SQL中,可以将VBA函数插入查询中。您的示例似乎遵循了一种模式,因此您可以尝试这样的方法。创建一个模块或将这10行插入到现有模块中:
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更改为上面提到的原始数据字段):
MyExtractedDates: ExtractedValues([MyDataField])根据提供的示例,结果应该是您所要寻找的结果。
发布于 2019-07-04 08:12:40
只有一行代码的助手函数可以做到这一点:
Public Function GetDatePart(ByVal Text As String) As String
GetDatePart = Split(Split(Text, " ", 3)(2), ".")(0)
End Function编辑
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 Functionhttps://stackoverflow.com/questions/56878469
复制相似问题