2010-07-15 37 views
0

我在Excel中有一列是从sql数据库导出的。如何获得某些数字

的列读这样的:

'Payment Funds: (654321) Company charged Public - Payment of transfer. Charged from account xyz to abc (into autopac agent).' 

标号:654321,帐户:XYZ和ABC;评论:(进入autopac代理) - 对于该列的所有记录而言是不同的。

我只需要获取所有记录的参考号码,我该怎么做呢?最好的方法是在SQL中,但会如果您使用MS SQL Server将下面的工作应该采取基于电子表格的答案....

感谢,

巫毒

+0

一个可接受的解决方案将一个也应该从第一个“(”和第一个“)”得到字符串。 – VoodooChild 2010-07-15 01:59:38

回答

2

。不过,字符串函数可以在RDBMS之间有所不同。指定您在问题中使用哪种技术是个好主意。

SELECT 
    SUBSTRING(col, CHARINDEX('(', col) + 1, CHARINDEX(')', col) - CHARINDEX('(', col) - 1) 
FROM 
    Some_Table 
+1

不应该SUBSTRING的第三个参数是长度而不是结束索引? – Mark 2010-07-15 02:32:15

+0

谢谢你的收获。我将更改 – 2010-07-15 02:41:02

+0

我正在使用Sybase 11,这似乎有用,非常感谢! – VoodooChild 2010-07-15 03:58:50

0

试试这个,它的正则表达式功能,为Excel:

Private Function RegularExpression(SearchString As String, Pattern As String) As String 

    Dim RE As Object, REMatches As Object 

    'Create the regex object' 
    Set RE = CreateObject("vbscript.regexp") 
    With RE 
     .MultiLine = False 
     .Global = False 
     .IgnoreCase = True  
     'set the search pattern using parameter Pattern' 
     .Pattern = Pattern 
    End With 

    'Search for the pattern' 
    Set REMatches = RE.Execute(SearchString) 
    If REMatches.Count > 0 Then 
     'return the first match' 
     RegularExpression = REMatches(0) 
    Else 
     'nothing found, return empty string' 
     RegularExpression = "" 
    End If 

End Function 

你可以把它公开,并使用它像这样
=RegularExpression(A2,"[0-9]{6}") 这将内走出前6位数字序列单元格A2
注意:这是一个较旧的功能,所以您可能需要稍微玩一下,但它应该很好