Utilizando regexp_replace para substituir as aspas simples em torno da string, mas não dentro das palavras, por exemplo não pode

0

Estou usando o código abaixo de um script bash para substituir aspas simples da minha coluna de título em um banco de dados postgres com espaços.

psql -U postgres -d my_database -c "UPDATE my_table SET title = regexp_replace(title, '''', ' ', 'g')"

Meu problema é que pretendo remover as aspas simples das strings, por exemplo, assim:

this is example 'number one' ok

torna-se

this is example  number one  ok 

Isso funciona como eu esperava. No entanto, também está removendo as aspas simples das palavras, então:

can't

torna-se

can t

Como posso especificar que apenas quero substituir as aspas simples por strings.

    
por nmh 23.05.2016 / 18:29

1 resposta

0

Eu não acho que haja uma maneira legal de fazer isso com apenas uma substituição. Mas se quatro substituições estiverem bem, proceda da seguinte forma:

  1. Substitua \A' por (ou seja, substitua ' no início da cadeia).

  2. Substitua '\Z por (ou seja, substitua ' no final da string).

  3. Substitua globalmente ([^[:alnum:]])' por (ou seja, substitua todas as seqüências de caracteres não alfanuméricos e ' pelo caractere não alfanumérico e ).

  4. Substitua globalmente '([^[:alnum:]]) por (ou seja, substitua cada sequência de ' e um caractere não alfanumérico por e o caractere não alfanumérico.)

O efeito líquido é substituir cada ' , exceto aqueles que são precedidos e seguidos por um caractere alfanumérico.

Aviso: Eu não faço idéia do PostgreSQL; você tem que traduzi-lo na sintaxe do PostgreSQL você mesmo.

    
por 23.05.2016 / 19:42