PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

2 Möglichkeiten, Zeilen zurückzugeben, die nur alphanumerische Zeichen in PostgreSQL enthalten

Im Folgenden finden Sie zwei Methoden zum Zurückgeben von Zeilen, die in PostgreSQL nur alphanumerische Zeichen enthalten.

Alphanumerische Zeichen sind alphabetische Zeichen und numerische Zeichen.

Beispieldaten

Wir verwenden die folgenden Daten für unsere Beispiele:

SELECT c1 FROM t1;

Ergebnis:

 Music
 Live Music
 Café
 Café Del Mar
 100 Cafés
 [email protected]
 1 + 1
 ()
 [email protected]#&()–[{}]:;',?/*
 `~$^+=<>“
 $1.50
 Player 456
 007
 null
 
 é
 É
 é 123
 ø
 ø 123

Option 1:Vergleiche mit [:alnum:]

Wir können PostgreSQLs ~ verwenden Operator, um den Wert mit einem regulären Ausdruck zu vergleichen.

Die Funktion für reguläre Ausdrücke von PostgreSQL umfasst die Unterstützung der POSIX-Zeichenklassen. Daher können wir den [:alnum:] verwenden POSIX-Zeichenklasse in unseren regulären Ausdrücken, um die Zeilen zu finden, die alphanumerische Zeichen enthalten.

SELECT c1 FROM t1 
WHERE c1 ~ '^[[:alnum:]]+$';

Ergebnis:

 Music
 Café
 007
 é
 É
 ø

Das gibt nur die Werte zurück, die ausschließlich aus alphanumerischen Zeichen bestehen. Wenn eine Zeile sowohl alphanumerische als auch nicht-alphanumerische Zeichen enthält, wird sie nicht zurückgegeben.

Beachten Sie, dass das Leerzeichen als nicht alphanumerisch betrachtet wird. Wenn wir also Leerzeichen einfügen möchten, können wir Folgendes tun:

SELECT c1 FROM t1 
WHERE c1 ~ '^[[:alnum:] ]+$';

Ergebnis:

 Music
 Live Music
 Café
 Café Del Mar
 100 Cafés
 Player 456
 007
 é
 É
 é 123
 ø
 ø 123

Um alle Zeilen zurückzugeben, die enthalten alphanumerische Zeichen (auch wenn die Zeile auch nicht-alphanumerische Zeichen enthält), können wir Folgendes tun:

SELECT c1 FROM t1 
WHERE c1 ~ '[[:alnum:]]';

Ergebnis:

 Music
 Live Music
 Café
 Café Del Mar
 100 Cafés
 [email protected]
 1 + 1
 $1.50
 Player 456
 007
 é
 É
 é 123
 ø
 ø 123

Option 2:Geben Sie einen Zeichenbereich an

Eine andere Möglichkeit besteht darin, einen Bereich von Zeichen innerhalb des regulären Ausdrucks anzugeben.

Beispiel:

SELECT c1 FROM t1
WHERE c1 ~ '^[A-Za-z0-9]+$';

Ergebnis:

 Music
 007

Sie werden feststellen, dass dies weniger Zeilen zurückgegeben hat als bei unserem ersten Beispiel. Das liegt daran, dass ich den é nicht eingefügt habe , É , oder ø Zeichen in meinem Bereich, und daher werden alle Zeilen, die diese Zeichen enthalten, von der Ausgabe ausgeschlossen.

Daher lohnt es sich, bei der Anwendung dieser Methode besonders achtsam zu sein. Es wäre leicht, versehentlich Zeichen auszuschließen, die Sie einschließen sollten.

Um diesen Bereich beizubehalten, können wir jedoch Leerzeichen wie diese einfügen:

SELECT c1 FROM t1 
WHERE c1 ~ '^[A-Za-z0-9 ]+$';

Ergebnis:

 Music
 Live Music
 Player 456
 007

Und wir können Folgendes verwenden, um alle Zeilen einzuschließen, die enthalten Zeichen aus unserem Bereich (auch wenn sie auch Zeichen außerhalb dieses Bereichs enthalten):

SELECT c1 FROM t1 
WHERE c1 ~ '[A-Za-z0-9]';

Ergebnis:

 Music
 Live Music
 Café
 Café Del Mar
 100 Cafés
 [email protected]
 1 + 1
 $1.50
 Player 456
 007
 é 123
 ø 123