No postgresql, como substituo todas as instâncias de uma string em uma coluna do banco de dados?
Digamos que eu queira substituir todas as instâncias de cat
por dog
, por exemplo.
Qual é a melhor forma de fazer isso?
postgresql
replace
marca
fonte
fonte
Respostas:
Você deseja usar a função de substituição do postgresql :
por exemplo :
Esteja ciente, no entanto, de que isso será uma substituição string a string, para que 'categoria' se torne 'dogegory'. a função regexp_replace pode ajudar a definir um padrão de correspondência mais rigoroso para o que você deseja substituir.
fonte
regexp_replace
O caminho da expressão regular
Se você precisar de uma correspondência de substituição mais rígida, a
regexp_replace
função do PostgreSQL poderá corresponder usando padrões de expressão regular POSIX. Possui a sintaxe regexp_replace (origem, padrão, substituição [, sinalizadores]) .Usarei sinalizadores
i
eg
para correspondência global e sem distinção entre maiúsculas e minúsculas, respectivamente. Eu também vou usar\m
e\M
para coincidir com o início e o fim de uma palavra, respectivamente.Geralmente, existem algumas dicas ao executar a substituição de regex. Vamos ver como é fácil substituir um gato por um cachorro .
Mesmo depois de tudo isso, há pelo menos uma condição não resolvida. Por exemplo, as frases que começam com "Gato" serão substituídas por "cachorro" em minúsculas que quebram a capitalização de frase.
Confira os documentos atuais de correspondência de padrões do PostgreSQL para obter todos os detalhes.
Atualizar coluna inteira com texto de substituição
Dados meus exemplos, talvez a opção mais segura seria:
fonte
Você pode usar a
replace
funçãoA definição da função é a seguinte (obtida daqui ):
e retorna o texto modificado. Você também pode verificar este violino sql .
fonte
Aqui está um exemplo que substitui todas as instâncias de 1 ou mais caracteres de espaço em branco em uma coluna por um sublinhado usando expressão regular -
fonte