Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
163
Assunto : SQL Server
Titulo: Como alterar campos TEXT no servidor

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



A manipulação de campos TEXT é uma manipulação complexa, pois como seu conteúdo pode ser superior a 8000 bytes, limite da variável VarChar, consequentemente seu conteúdo não pode ser inserido em uma variável.

Normalmente, ao manipular campos TEXT, procuramos alguma coisa escrita neste campo para alterar parte do texto a partir desta posição. Vejamos um pequeno exemplo :

USE Northwind
GO
CREATE TABLE TextParts (ColA INT PRIMARY KEY, ColB TEXT)
GO
INSERT INTO TextParts
VALUES( 1, 'Sample string START TAG Text to go END TAG Trailing text.')

Com o código acima criamos uma tabela contendo um campo TEXT e inserimos algum texto.

Vamos eliminar o texto existente entre START TAG e END TAG. O 1o passo é identificar as posições em que se encontram START TAG e END TAG dentro do campo TEXT. Para isso utilizaremos a função PATINDEX, que devolve a posicão de uma pequena string dentro de um texto.

Outra questão importante é que para utilizarmos a instrução UPDATETEXT precisaremos de um ponteiro para o campo texto que será alterado (este ponteiro identificará o registro a ser alterado). Para obtermos esse ponteiro deveremos utilizar a função TEXTPTR.

Veja como fica esse trecho do código :

DECLARE @PtrVar BINARY(16)
DECLARE @InsertPos INT
DECLARE @DeleteLen INT

SELECT @PtrVar = TEXTPTR(ColB),
@InsertPos = (PATINDEX('%START TAG%', ColB) + 9),
@DeleteLen = ( PATINDEX('%END TAG%', ColB) -
( PATINDEX('%START TAG%', ColB) + 9
+ 2 /* allow for blanks */ ))


No código acima 3 variáveis foram declaradas, uma para guardar o ponteiro, outra a posição de inicio da deleção e a 3a o total de caracteres a serem deletados.

O + 9 na posição inicial é devido ao tamanho da palavra START TAG (a posição inicial é o "S", mas não queremos deletar a START TAG, então somamos 9)
Já o +2 garante que ficarão 2 espaços entre o START TAG e o END TAG.

Por fim, realizamos o UPDATETEXT. Se fizermos :

UPDATETEXT TextParts.ColB
@PtrVar
@InsertPos
@DeleteLen

Estaremos simplesmente eliminando o texto entre a START TAG e a END TAG (@insertpos determina o inicio da eliminação, @deletelen determina quantos caracteres serão eliminados).

Se, porém, fizermos :

UPDATETEXT TextParts.ColB
@PtrVar
@InsertPos
@DeleteLen
'The new text'

Estaremos substituindo o texto entre START TAG e END TAG pelo texto 'The new text'.




Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br