maneira mais eficaz de pegar um nome de tabela na seguinte seqüência

votos
1

Qual seria a maneira mais eficaz para agarrar o esquema + nome da tabela neste cenário:

SELECT [t0]. [Id], [t0]. [CÓDIGO] AS [arg0], [t0]. [DESC] AS [Arg1] DE [SchemaName]. [NomeTabela] AS [t0] ONDE ([t0]. [id] <> @ p0)

O resultado deve ser: SCHEMANAME.TABLENAME ....

Eu estou usando C #.

Obrigado!

Publicado 10/12/2008 em 03:35
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Ou você pode usar uma expressão regular:

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]); }

Ou se você não quer incluir os colchetes:

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]); }
Respondeu 10/12/2008 em 04:03
fonte usuário

votos
1

Apenas algumas boas antiga cadeia analisar com Substrings seria o meu palpite. Algum código:

 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);
Respondeu 10/12/2008 em 03:44
fonte usuário

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