2017-03-06 2 views
1

ich loswerden Tags erhalten möchte, die nur aus chinesischen bestehen, koreanisch, usw.Wie in Postgresql der chinesischen loszuwerden

fand ich folgendes mit Nicht-ASCII-Zeichen Linien zur Liste:

select col from tablename where col ~ '[^[:ascii:]]'; 

Wie kann ich dies ändern, um Zeilen aufzulisten, die nur aus nicht-ASCII-Zeichen bestehen?

+0

Versuchen Sie 'where col ~ '^ [^ [: ascii:]] + $'' –

+0

Auf jeden Fall einige zu finden, aber ich denke nicht, dass es alles findet. Nur 25 Zeilen, ziemlich sicher, dass es viel mehr gibt; Vielleicht braucht Platz? – Superdooperhero

+1

Entschuldigung, nur Sie haben die Daten und können die Anforderungen angeben. '^ [^ [: ascii:]] + $' entspricht Strings, die aus 1 oder mehr Nicht-ASCII-Zeichen bestehen. –

Antwort

1

Es scheint, dass das Wichtigste für Sie ist, eine Zeichenfolge zu finden, die bestimmte Zeichen nicht enthält.

Sie müssen zuerst die Zeichen/Bereiche identifizieren, die nicht übereinstimmen sollen, und sie in einen negierten Klammerausdruck eingeben.

Also, wenn Sie Zeichenfolge müssen übereinstimmen, die Nicht-ASCII-Zeichen enthalten, nur Sie

select col from tablename where col ~ '^[^[:ascii:]]+$'; 

Beachten Sie, dass ^ Matches der Beginn der Zeichenfolge verwenden müssen, [^[:ascii:]]+ Matches 1+ verkohlt andere als ASCII und $ Streichhölzer das Ende der Zeichenfolge. Wenn Sie Einträge suchen müssen, die keine ASCII-Buchstaben enthalten, ersetzen Sie das Muster durch ^[^a-zA-Z]+$.

Wenn Sie Einträge mit ASCII-Buchstaben/Ziffern abgleichen müssen, verwenden Sie ^[^a-zA-Z0-9]+$.

Verwandte Themen