Наиболее эффективный способ, чтобы захватить имя таблицы в следующей строке

голоса
1

Что было бы наиболее эффективным способом, чтобы захватить схему + имя таблицы в этом случае:

SELECT [t0]. [Id], [t0]. [КОД] AS [arg0], [t0]. [По убыванию] AS [арг1] ОТ [ИмяСхемы]. [TableName] AS [t0] ГДЕ ([t0]. [Id] <> @ p0)

Результат должен быть таким: «SchemaName.TableName» ....

Я использую C #.

Благодаря!

Задан 10/12/2008 в 03:35
источник пользователем
На других языках...                            


2 ответов

голоса
1

Или вы могли бы использовать регулярное выражение:

string data = "SELECT [t0].[Id], [t0].[CODE] AS [arg0], [t0].[DESC] AS [arg1] FROM [SchemaName].[TableName] AS [t0] WHERE ([t0].[Id] <> @p0)";
Regex re = new Regex(@"FROM ((\[\w+\]\.?){2}) AS");
Match m = re.Match(data);
if (m.Success){ Console.WriteLine(m.Groups[1]); }

Или, если вы не хотите включать в скобки:

string data = "SELECT [t0].[Id], [t0].[CODE] AS [arg0], [t0].[DESC] AS [arg1] FROM [SchemaName].[TableName] AS [t0] WHERE ([t0].[Id] <> @p0)";
Regex re = new Regex(@"FROM \[(\w+)\]\.\[(\w+)\]\ AS");
Match m = re.Match(data);
if (m.Success){ Console.WriteLine("{0}.{1}", m.Groups[1], m.Groups[2]); }
Ответил 10/12/2008 в 04:03
источник пользователем

голоса
1

Просто какая-то старая хорошая обработка строк с подстроки будет моя догадка. Часть кода:

 string q = @"SELECT [t0].[Id], [t0].[CODE] AS [arg0], [t0].[DESC] AS [arg1] FROM [SchemaName].[TableName] AS [t0] WHERE ([t0].[Id] <> @p0)";
            int fromIndex = q.IndexOf("FROM")+5;
            int asIndex = q.IndexOf("AS",fromIndex);
            q = q.Substring(fromIndex, asIndex - fromIndex);
Ответил 10/12/2008 в 03:44
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more