2013-06-12 3 views
0

][ 사이에있는 숫자 (및 ]이 아님)와 어떻게 일치합니까?]와 [?] 사이에있는 숫자를 찾는 방법은 무엇입니까?

EDIT-1 즉

, 나는 내가 ][ 사이의 숫자가 해당 행을 추출합니다. 내 테이블

ID1 id mycolmn 
    1 100 [ab-ee]43[ddhj] 
    2 233 [aa-33]49[kl-00] 
    3 344 [ss-23][wdsd] 

... 다음과 같습니다 그리고 내가 가야

43 
49 

EDIT-1은

이 예제 파일 here를 참조 끝납니다. MyDatabase에 열이 있는데 그 중 두 자리 숫자가 ][ 사이 인 행을 추출하려고합니다.

[ab-ee]43[ddhj] 또는 [aa-33]49[kl-00]

다음은 작동하지 않았다.

SELECT * from myTable where [mycolmn] Like "*\]##\[*" 
+0

시간이 지나면 Google이 아무 것도 나타나지 않으면 내 대답을 삭제했습니다. 모듈에서 InStr 함수를 사용해야하고 데이터를 임시 테이블로 구문 분석 한 다음 임시 테이블을 필터링해야하는 것처럼 보입니다. –

+0

@ user2174085 제 생각 엔 제 생각 엔. 나는 아직 그것을 시험하지 않았지만 그것이해야한다고 생각한다. – Scotch

답변

3

사용할 수를 탈출 할 수 있도록 내가 당신의 괄호 안에 괄호를 넣어 괄호처럼 들었다 VBA 또는 SQL.

VBA :

Function GetCode(MyColumn As String) As String 
    Dim RE As New RegExp 
    Dim colMatches As MatchCollection 
    With RE 
     .Pattern = "\]\d\d\[" 
     .IgnoreCase = True 
     .Global = False 
     .Multiline = False 
     Set colMatches = .Execute(MyColumn) 
    End With 
    If colMatches.Count > 0 Then 
     GetCode = Replace(Replace(colMatches(0).Value, "[", ""), "]", "") 
    Else 
     GetCode = "" 
    End If 
End Function 

그리고 당신은 이런 식으로 부를 것이다 : 당신이 해협 SQL 솔루션을 원하는 경우

SELECT GetCode([test]) AS MyDigits 
FROM test; 

:

SELECT Mid([test],InStr([test],"]")+1,2) AS MyDigits 
FROM test; 

이는 것으로 가정 너의 숫자는 t 후에 온다. 그는 먼저]. 그렇지 않다면 더 수정할 수 있습니다 IIF, INSTR, & MID 귀하의 패턴과 일치하는 기능. 못생긴 것이지만 작동 할 수 있습니다.

+0

Btw, VBA 솔루션의 경우 Microsoft VBScript Regular Expressions 참조가 필요합니다. –

-1

당신은 PATINDEX을 시도 할 수 있습니다 :

다음
create table TestPatIndex 
(
    MyData varchar(100) 
) 

insert into TestPatIndex select '[ab-ee]43[ddhj]' 
insert into TestPatIndex select '[ab-ee]XX[ddhj]' 

select SUBSTRING(MyData, PATINDEX ('%][0-9][0-9][[]%', MyData) + 1, 2) 
from TestPatIndex 
where isnumeric(SUBSTRING(MyData, PATINDEX ('%][0-9][0-9][[]%', MyData) + 1, 2)) = 1 

는 SQL 바이올린에 link입니다. 이 같은

뭔가 MS Access에서 작동합니다 :

SELECT MyData AS Expr1 
FROM TestPatIndex 
where MyData like '*][0-9][0-9][[]*' 
+0

나는 곧장 해결책이있을 것이라고 생각했다. 현재 나는 MsAccess에서 데이터를 추출하고'R'을 사용하여 필터링을 수행하고 있습니다. 그것은 꽤 잘 작동하고 있습니다. MSAccess 구문이 있는지 확인하고 싶습니다. –

+0

MS Access 구문 –

0

야 임마 내가 당신이 당신의 괄호

Select * FROM yourTable WHERE MAtch LIKE "*]##[ [ ]*" 
+0

에 대한 대답을 업데이트했습니다. 업로드 한 데이터에 대해 적어도 하나는 작동하지 않습니다. –

+0

동일한 예제 데이터로 시도해 보았습니다. 어떤 버전의 액세스를 사용하고 있습니까? – Scotch

+0

숫자를 추출하지 않습니다. 이 패턴과 일치하는 레코드 만 표시됩니다. –

0
Select Mid([MyColumn],InStr([MyColumn],"]")+1,2) AS MyDigits 
FROM yourTable WHERE [MyColumn] LIKE "*]##[ [ ]*" 

이 답변이 귀하의 필요에 부합하는지 확인하십시오. 그것이 StackOverflow가 작동하는 방법입니다.

+0

나는 다음과 같은'MyDigits row-1을 얻는다. 43 row-2) 49 row-3) [w' –

+0

Nevermind ... 나는 방금 그것을 다시 읽었다. 좋아, 잠깐만 ... –

+0

내 질문보기 편집 - –

관련 문제