我希望提取以下字符串中的3个文本部分..
"/opt/odoo/projects/project/sftp_import_export_extend/models/sftp_import_export.py", line 47, in export_sftp
export_time=now, external_data=external_data)
ValueError: "export_data() got an unexpected keyword argument 'external_data'" while evaluating
u'invoice_validate()'
知道Requested Ship Date: 05/31/2016 Please charge shipping to: ups 1234 PO Number: po 1234
和Requested Ship Date:
以及Please charge shipping to:
永远不会改变..但第二个和第三个的字符长度可以改变..
我在SQL Access方面不是很好。我知道在Excel中使用right和find选项很容易..但在Access?
有没有办法找到每个PO Number:
的{{1}},然后减去结果?
任何可以帮助我的想法?
答案 0 :(得分:2)
使用Split()
可以很容易地将输入字符串分成几部分并提取所需的部分。以下是Access Immediate窗口中的示例。
YourString = "Requested Ship Date: 05/31/2016 Please charge shipping to: ups 1234 PO Number: po 1234"
astrPieces = Split(YourString, " ")
? astrPieces(3)
05/31/2016
? astrPieces(9)
1234
? astrPieces(13)
1234
但是,Split()
不能直接在Access SQL中使用。但是,由于您的查询只能在Access会话中运行,因此您可以创建一个使用Split()
的VBA函数并在查询中使用该函数。
以下是此类功能的即时窗口示例。
? GetShipData(YourString, "date")
05/31/2016
? GetShipData(YourString, "ups")
1234
? GetShipData(YourString, "po")
1234
所以你的查询可能类似于:
SELECT
GetShipData([YourFieldName], "date") AS ship_date,
GetShipData([YourFieldName], "ups") AS ups,
GetShipData([YourFieldName], "po") AS po
FROM YourTable;
这是我在上面的立即窗口示例中测试的函数:
Public Function GetShipData(ByVal pInput As String, ByVal pWhichItem As String) As String
Dim astrPieces() As String
Dim strReturn As String
astrPieces = Split(pInput, " ")
Select Case pWhichItem
Case "date"
strReturn = astrPieces(3)
Case "ups"
strReturn = astrPieces(9)
Case "po"
strReturn = astrPieces(13)
Case Else
strReturn = "fail" '<- figure out what you want here
End Select
GetShipData = strReturn
End Function
如果您的任何输入字符串与问题的示例字符串模式不匹配,您可能希望优化该函数。