2015-04-17 3 views
0

Я только хочу, чтобы выбрать символы, найденные в круглых скобках «()» Я нашел код, который будет выбирать символы между одной и той же строки:SQL: Выбор символов между Mulitple Известные строки

Public Function GetStuffYouWant(ByVal pInput As Variant, _ 
     Optional pSplitChar As String = "-") As Variant 
    Dim varResult As Variant 
    Dim varPieces As Variant 

    If IsNull(pInput) Then 
     varResult = Null 
    Else 
     varPieces = Split(pInput, pSplitChar) 
     If UBound(varPieces) > 1 Then 
      varResult = varPieces(1) 
     Else 
      varResult = Null 
     End If 
    End If 
    GetStuffYouWant = varResult 
End Function 

Он прекрасно работает, потому что, когда есть null values ​​Я не получаю null ошибку.

Проблема в том, что мне нужно выбрать символы между двумя известными строками. Я нашел этот код, который смотрит на две строки, но я не знаю, как писать его в первый код, чтобы получить свои желаемые результаты:

dim first as integer 
    dim second as integer 
    dim result as string 
    first = instr(1,"yourtext","-") 
    second = instr(first+1,"yourtext","-") 

    if first > 0 and second > first then 
      second = second - first 
      result = mid("yourtext",first+1, second-1) 
    end if 

Это пример того, что мне нужно:

Before:       I need: 
    Issue      Issue 
    ------      ------ 
1 (Dog) at the carpet   Dog at the carpet 
2             <---Not a null error 
3 (Cat) dog     Cat 
+0

вы просите SQL или VB.NET? – Suing

+0

Хороший вопрос. Я бы принял любое решение, которое отделяло бы() от текста, не давая мне нулевых ошибок. – user4581436

ответ

0

Этот код будет разбирать ваш «varPieces (1)» для текста внутри «(» и «)»

Public Function GetStuffYouWant(ByVal pInput As Variant, _ 
     Optional pSplitChar As String = "-") As Variant 
    Dim varResult As Variant 
    Dim varPieces As Variant 

    If IsNull(pInput) Then 
     varResult = Null 
    Else 
     varPieces = Split(pInput, pSplitChar) 
     If UBound(varPieces) > 1 Then 
      varResult = GetStuffYouWant_Parse(varPieces(1)) 
     Else 
      varResult = Null 
     End If 
    End If 
    GetStuffYouWant = varResult 
End Function 

Public Function GetStuffYouWant_Parse(ByVal pInput As String) As String 
    dim first as integer 
    dim second as integer 
    dim result as string 

    first = instr(1,pInput ,"(") 
    second = instr(first+1,pInput,")") 

    if first > 0 and second > first then 
      second = second - first 
      result = mid(pInput,first+1, second-1) 
    end if 

    GetStuffYouWant_Parse = result 
End Function 
+0

Это почти работает, однако я получаю сообщение «ОШИБКА», когда значения равны нулю – user4581436

Смежные вопросы