por exemplo, se eu tiver string '012345678'
e precisar atualizar a posição número 4 em outro byte/caractere 'x'
por exemplo:
INSERT INTO foo(pk,pos) VALUES('abcdefghi',5)
ON DUPLICATE KEY UPDATE
pk = CONCAT(
SUBSTRING(pk,1,VALUES(pos)-1),
SUBSTRING(VALUES(pk),VALUES(pos),1),
SUBSTRING(pk,VALUES(pos)+1)
);
-- simpler example:
SELECT CONCAT(SUBSTRING('abcdefghi',1,5-1),SUBSTRING('123456789',5,1),SUBSTRING('abcdefghi',5+1));
-- abcd5fghi
como fazer isso no VARBINARY
tipo de dados?
Você pode usar a
INSERT
função:Então, se você quisesse substituir um caractere na posição 4 na string
abcdefghi
, a expressão ficaria assim:Veja você mesmo nesta demonstração .
A expressão retornaria apenas uma string modificada. Use-o em uma tarefa para realmente escrever o resultado, quando necessário.