Translate

Atualização de Caractere em Posição Específica de um Campo Texto

 Contexto

Em alguns sistemas, algumas informações são armazenadas em campos do tipo texto, onde cada caractere representa uma permissão ou flag específica.

 Por exemplo, o campo permissoes_acesso da tabela tb_rotina_app pode conter uma sequência como SNSns, onde cada posição indica um tipo de permissão.

Solução

Para realizar essa atualização, utilizamos a função STUFF do SQL Server, que permite substituir um caractere em uma posição específica dentro de uma string. 

O exemplo abaixo demonstra como atualizar o caractere na posição 250 do campo permissoes_acesso para 'S':

DECLARE @posicao INT;
SET @posicao = 250;

UPDATE tb_rotina_app 
SET permissoes_acesso = 
    STUFF(permissoes_acesso, @posicao, 1, 'S')
WHERE LEN(permissoes_acesso) >= @posicao;

---CASO A POSIÇÃO AINDA NÃO FOI USADA
UPDATE tb_rotina_app 
SET permissoes_acesso = permissoes_acesso+'S'
WHERE LEN(permissoes_acesso) <= @posicao;

Explicação do Script

@posicao: Variável que define a posição do caractere a ser alterado.
STUFF(permissoes_acesso, @posicao, 1, 'S'): Substitui o caractere na posição indicada por 'S'.
WHERE LEN(permissoes_acesso) >= @posicao: Garante que apenas os registros com comprimento suficiente sejam atualizados, evitando erros.

Considerações

Esse procedimento é útil em cenários onde permissões são controladas por meio de sequências de caracteres, facilitando a manutenção e atualização de permissões de forma automatizada e segura.