Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Estou comecando a mexer com banco de dados SQL e estou com algumas dificuldades.
Tenho um arquivo de texto, que os dados não estão separados.
Ao inserir na tabela, ele vem assim
Fabricante do sistema: Microsoft Corporation
Modelo do sistema: Virtual Machine
Memória Virtual: Tamanho Máximo: 8.221 MB
.. ele tem cerca de 40 linhas ...
Preciso pegar dados de uma linha especifica, como por exemplo: Linha 2,10,12,25,26 ....
e tbm preciso que retorne tudo que esta antes do " : ".
Me ajudem, please.
A Jr
Eu cheguei a fazer isso, mas esta me retornando NULL
Olha o camando que usei
SELECT
CASE left(coluna, 4)
WHEN 'host' then ltrim ((SUBSTRING(coluna, CHARINDEX(':', coluna) - 1, LEN (coluna))))
end as valor
from tabela
Um exemplo:
declare @tabela table (coluna varchar(2000)) insert into @tabela values ('Fabricante do sistema: Microsoft Corporation')insert into @tabela values ('Modelo do sistema: Virtual Machine')insert into @tabela values ('Memória Virtual: Tamanho Máximo: 8.221 MB') SELECT *, LTRIM(RTRIM(substring(coluna, (charindex(':', coluna)+1) , len(coluna))))FROM @tabela
Esta retornando 2 colunas com a mesma informação, veja
coluna1 coluna2
Fabricante do sistema: Microsoft Corporation Microsoft Corporation
Modelo do sistema: Virtual Machine Virtual Machine
Memória Virtual: Tamanho Máximo: 8.221 MB Tamanho Máximo: 8.221 MB
>
Esta retornando 2 colunas com a mesma informação, veja
coluna1 coluna2
Fabricante do sistema: Microsoft Corporation Microsoft Corporation
Modelo do sistema: Virtual Machine Virtual Machine
Memória Virtual: Tamanho Máximo: 8.221 MB Tamanho Máximo: 8.221 MB
Observe que na coluna2 tem informações somente do que tem depois dos dois pontos. Não era isso que precisava??
Na verdade preciso de todas as informações, só separadas por coluna, tanto o que esta antes quanto o que esta depois do dois pontos
exemplo
COLUNA1 COLUNA2
Fabricante do sistema: Microsoft Corporation
Desculpa, se estou sendo chata, mas como disse to comecando agora, então estou super perdida ...
Ah ta.. entendi errado entao.
Vou te montar um exemplo. Guenta ai
declare @tabela table (coluna varchar(2000)) insert into @tabela values ('Fabricante do sistema: Microsoft Corporation')insert into @tabela values ('Modelo do sistema: Virtual Machine')insert into @tabela values ('Memória Virtual: Tamanho Máximo: 8.221 MB') SELECT CASE WHEN CHARINDEX(':',coluna) > 0 THEN LEFT(coluna, CHARINDEX(':',coluna)-1) ELSE coluna END As PrimeiroNome,CASE WHEN CHARINDEX(':',REVERSE(coluna)) > 0THEN RIGHT(coluna, CHARINDEX(':',REVERSE(coluna))-1)ELSE '' END As colunaFROM @tabela
Ok =)
em cima disso, terei de pegar apenas algumas linhas, que provavelmente usarei o row_number...
>
Ok =)
em cima disso, terei de pegar apenas algumas linhas, que provavelmente usarei o row_number...
Sim, pode colocar o row_number ou inserir um campo identity(1,1) na sua temporaria.
Deu super certo.
Muito Obrigada!
>
Deu super certo.
Muito Obrigada!
De nada.
Precisando, de uma pesquisada no fórum que tem muito material bacana!
Importa todos para uma tabela (fisica ou temporaria) e tire os dados dela.
Muito mais facil do que filtrar antes da importacao.
Se voce já tem eles em uma tabela, pode pegar o que tem antes dos dois pontos com substring e charindex.