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.