Я хочу получить слово, следующее за частью «FROM» в запросе БД. Иногда со следующим кодом он работает, иногда это не так. Кажется, что это зависит от длины имени таблицы.Получить слово после строки
Private Function GetTableName(Q As String) As String
'SELECT * FROM _table WHERE column LIKE '%test%'
Dim FROMPos As Integer = Q.ToLower.IndexOf("FROM".ToLower)
If FROMPos > -1 Then
Dim FirstSpacePos As Integer = Q.ToLower.IndexOf(Chr(32), FROMPos)
If FirstSpacePos > -1 Then
Dim EndSpacePos As Integer = Q.ToLower.IndexOf(Chr(32), FirstSpacePos + 1)
If EndSpacePos > -1 Then
'MsgBox(Q.Substring(FirstSpacePos + 1, EndSpacePos - FirstSpacePos))
Return Q.Substring(FirstSpacePos + 1, EndSpacePos - FirstSpacePos)
Else
Return ""
End If
Else
Return ""
End If
Else
Return ""
End If
End Function
"комплексный анализатор запросов" Google реально не показать мне, что им нужно. не могли бы вы дать мне подсказку, что означают? Спасибо! – drumbun
Он означает, что если вы хотите сделать реальный язык, анализируя способ компилятора, вам нужно заглянуть в CFG (http://en.wikipedia.org/wiki/Context-free_grammar). Для GOLDParser доступен грамматик SQL: http://goldparser.org/grammars/ Другим общим парсером языка является ANTLR (http://www.antlr.org/). – mattmc3