访问SQL>选择"高度"一些文字

时间:2016-09-22 05:56:04

标签: sql ms-access select split

我有一个填充了一些产品信息的Access数据库。 遗憾的是,高度,宽度等数据不在分离的列中。 所以我想知道如何使用一些SQL,以便我可以过滤/拆分这些值。

例如它看起来像这样:

Table: SHP_PRODUCT

Field: SHORT_DSC

Value: Candle "Country", Height 120mm, Diameter 50mm, red

Result should be: "120mm"

注意:高度并不总是与#34相同;它是第二个单词"。我也不能保证它以逗号分隔。

2 个答案:

答案 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