2014-01-22 38 views
1

如何从字段中只提取数字并将该值放入其自己的字段中?如何仅从文本字段中选择数字

例如,如果field1包含值“Name(1234U)”。

我需要一个SQL或VBA的方式来扫描该字段并将其拉出。所以field2将等于“1234”。

任何想法?

+0

感谢RedAces,虽然在mySQL中有效,但我需要SQL或VBA for MS Access 2007.值可以在字段中不同,但数字将始终在一起。所以它可能是默认的(4321U)或其他东西(7263A) –

+3

谁曾经投票关闭,请注意SQL是一个通用术语,Access SQL与MySQL或SQL Server不一样。 – Fionnuala

回答

2

这是可能的,这或变化可满足:

SELECT t.Field1, Mid([Field1],InStr([field1],"(")+1,4) AS Stripped 
FROM TheTable As t 

例如:

UPDATE TheTable AS t SET [field2] = Mid([Field1],InStr([field1],"(")+1,4); 

编辑再评论

如果该字段结束u),也就是阿尔法支架,你可以说:

UPDATE TheTable AS t SET [field2] = 
Mid([Field1],InStr([field1],"(")+1,Len(Mid([Field1],InStr([field1],"(")))-3) 
+0

我怎样才能调整这是动态的,并允许一个字段有3个数字,也许5个数字在一起? –

+0

例如,一个字段可能包含“名称(12345U)” –

+0

那就是票! ;)谢谢@Remou –

2

下面的VBA功能可能达到目的:使用正则表达式模式

[^0-9]+ 

相匹配的一个或多个非数字字符

RegexReplaceAll("Name(1234U)","[^0-9]+","") 

返回

Option Compare Database 
Option Explicit 

Public Function RegexReplaceAll(_ 
     OriginalText As Variant, _ 
     Pattern As String, _ 
     ReplaceWith As String) As Variant 
    Dim rtn As Variant 
    Dim objRegExp As Object ' RegExp 

    rtn = Null 
    If Not IsNull(OriginalText) Then 
     Set objRegExp = CreateObject("VBScript.RegExp") ' New RegExp 
     objRegExp.Pattern = Pattern 
     objRegExp.Global = True 
     rtn = objRegExp.Replace(OriginalText, ReplaceWith) 
     Set objRegExp = Nothing 
    End If 
    RegexReplaceAll = rtn 
End Function 

实施例

1234 

编辑:

从接入应用程序本身内查询运行使用,尝试像

SELECT Field1, RegexReplaceAll(Field1,"[^0-9]+","") AS JustNumbers 
FROM Table1; 
+0

如果“某事”是例如'User1'会发生什么? – Fionnuala

+0

@Remou'RegexReplaceAll(“User1”,“[^ 0-9] +”,“”)'如预​​期的那样返回'1'。 –

+0

我没有很好的表达'User1(1234U)' – Fionnuala

0

创建一个VBA函数,把它作为一个字段在查询中,并通过它原始字段(如select GetNumerals(field1) from table...)。 VBA函数将遍历字段中的每个字母并仅返回数字值。它可能看起来像这样:

Public Function GetNumerals(str As String) As String 

Dim i As Integer 

    For i = 1 To Len(str) 
     If IsNumeric(Mid(str, i, 1)) Then 
      GetNumerals = GetNumerals & Mid(str, i, 1) 
     End If 
    Next i 

End Function 
相关问题