使用查询去掉非数字字符

时间:2014-06-26 16:56:36

标签: sql ms-access-2010

MS Access的轻量级用户,因此无论如何都不是高级用户。

好的,先解释一下我想要的东西。

我有两个表,一个用户名XXX99999(3 Alpha 5数字),另一个只有99999(5个数字)。

他们是同一个人,在大多数情况下,我可以放心地删除前3个字母并执行我需要使用最后5个数字数字“链接”。

我想通过查询来做这件事。

我的问题是,我如何屏蔽它来构建我的查询。

所有5个数字都是唯一的。

1 个答案:

答案 0 :(得分:0)

如果你在@paxdiablo这里(VBA: How to Find Numbers from String)接受这个功能,那是

Public Function onlyDigits(s As String) As String
    ' Variables needed (remember to use "option explicit").   '
    Dim retval As String    ' This is the return string.      '
    Dim i As Integer        ' Counter for character position. '

    ' Initialise return string to empty                       '
    retval = ""

    ' For every character in input string, copy digits to     '
    '   return string.                                        '
    For i = 1 To Len(s)
        If Mid(s, i, 1) >= "0" And Mid(s, i, 1) <= "9" Then
            retval = retval + Mid(s, i, 1)
        End If
    Next

    ' Then return the return string.                          '
    onlyDigits = retval
End Function

将其粘贴到模块并保存,您应该能够在这样的查询中链接两个表(假设Table1具有唯一的数字字段而Table2具有字母和数字):

SELECT Table1.MyField1, Table2.MyField2
FROM Table1 INNER JOIN Table2
ON CStr(Table1.OnlyNumbersField) = onlyDigits(Table2.TextAndNumberField);

这将删除幕后的字母字符,确保两种数据类型相同,然后“链接”它们以在查询中生成连接结果。我知道你说你不是一个超级用户,这对你来说可能很复杂,但没有“简单”的方法来做到这一点。我可以通过多个查询来引导您完成这些操作,这可能对您更有意义,但需要解释的更多。