我有一个填充了一些产品信息的Access数据库。 遗憾的是,高度,宽度等数据不在分离的列中。 所以我想知道如何使用一些SQL,以便我可以过滤/拆分这些值。
例如它看起来像这样:
Table: SHP_PRODUCT
Field: SHORT_DSC
Value: Candle "Country", Height 120mm, Diameter 50mm, red
Result should be: "120mm"
注意:高度并不总是与#34相同;它是第二个单词"。我也不能保证它以逗号分隔。
答案 0 :(得分:0)
您可以创建小函数来检索它:
Public Function ExtractHeight(ByVal Value As String) As String
Dim Parts As Variant
Parts = Split(Value, "Height")
If UBound(Parts) > LBound(Parts) Then
ExtractHeight = Replace(Trim(Split(Parts)(1), " ")(0)), "m,", "m")
End If
End Function
然后在您的查询中使用它:
Height: ExtractHeight([SHORT_DSC])
答案 1 :(得分:0)
如何使用RegEx?
Public Function extractHeight(ByVal val as String) As String
Dim regEx As New VBScript_RegExp_55.RegExp
Dim regExMatches As Object
regEx.Pattern = "Height\s[\d*\,*\.*]+[a-z]{0,1}m"
regEx.Global = False
Set regExMatches = regEx.Execute(val)
If regExMatches.Count > 0 Then
extractHeight = Replace(regExMatches(0), "Height ", "")
Else
extractHeight = ""
End If
End Function
在上述查询中使用
正则表达式模式Height\s[\d*\,*\.*]+[a-z]{0,1}m
匹配以" Height"开头的字符串,后跟空格,然后是'。'。或者',',然后是一个字符串,例如cm,mm,m。
确保将Microsoft VBScript Regular Expressions 5.5
添加到VBA edtior中的引用(Extras - References
)