2017-03-20 3 views
1

Ich habe einige Daten in einer Tabelle in folgendem Format in Amazon Redshift:Ersetzen Apostroph Zeichen in einer Spalte in Amazon Redshift

Column1 Column2 
'a'   'b' 

Ich mag würde die Apostrophe aus dieser Tabelle entfernen und erhalten die Daten wie folgt:

Column1 Column2 
a   b 

ich die Replace Funktion den Trick tun würde, hätte gedacht, also schrieb ich die folgende Abfrage:

select replace(column1,''',''), 
     replace(column2,''','') 
from table 

Aber das funktioniert nicht und gibt mir Amazon](500310) Invalid operation: unterminated quoted string at or near "''',''). Ich habe versucht, das einfache Anführungszeichen durch \ zu entkommen, aber selbst das hat nicht funktioniert.

Ich habe auch versucht die folgende Abfrage verwenden:

select replace(column1,"'",''), 
      replace(column2,"'",'') 
    from table 

Aber es gab mir den Fehler [Amazon](500310) Invalid operation: column "'" does not exist in <tablename>

So wie ich diese einzelnen Zeichen aus meiner Daten zu entfernen?

Jede Hilfe würde sehr geschätzt werden.

TIA.

+0

Wie sind die Zitate überhaupt reingekommen? Das ist das eigentliche Problem, das Sie lösen müssen. – EJP

+0

Verwenden Sie MySQL oder Amazon Redshift? Bitte entfernen Sie das falsche Tag. –

+0

Sie können Postgresql-Tag hinzufügen, mysql ist nicht mit dieser Frage verbunden. Ist es? –

Antwort

1

Mit MySQL haben Sie zwei Möglichkeiten, zu zitieren, so müssen Sie wechseln:

REPLACE(column1, "'", "") 

Sie nicht den gleichen Charakter für beide Begrenzungs und Inhalte ohne entkommen können:

REPLACE(column1, '\'', '') 
+0

Ich habe vergessen, in meiner ursprünglichen Frage zu erwähnen, doppelte Anführungszeichen funktioniert auch nicht. Es gibt mir den Fehler "[Amazon] (500310) Ungültige Operation: Spalte" '"existiert nicht in ' – Patthebug

+0

Was ist mit der zweiten Option? Wenn Sie 'ANSI_QUOTES' verwenden, ist der erste Eintrag out, aber das ist nicht der Standard für MySQL. – tadman

+0

Ich kann bestätigen, dass die zweite Option in Amazon Redshift korrekt funktioniert: 'select replace (column1, '\' ',' '), replace (column2,' \ '', '') aus der Tabelle;' –

0
select replace(column1,chr(39),''), 
     replace(column2,chr(39),'') 
from table 

Die CHR-Funktion gibt das Zeichen zurück, das dem durch den Eingabeparameter angegebenen ASCII-Codepunktwert entspricht.

Wenn ich eine schlechte Annahme gemacht habe, bitte Kommentar und ich werde meine Antwort neu fokussieren.

Verwandte Themen