Nedan finns två alternativ för att returnera rader som endast innehåller icke-alfanumeriska tecken i PostgreSQL.
Icke-alfanumeriska tecken inkluderar skiljetecken som [email protected]#&()–[{}]:;',?/*
och symboler som `~$^+=<>“
, såväl som blanksteg som blanksteg eller tabbtecken.
Exempeldata
Vi använder följande data för våra exempel:
SELECT c1 FROM t1;
Resultat:
+----------------------+ | c1 | +----------------------+ | Music | | Live Music | | Café | | Café Del Mar | | 100 Cafés | | [email protected] | | 1 + 1 | | () | | [email protected]#&()–[{}]:;',?/* | | `~$^+=<>“ | | $1.50 | | Player 456 | | 007 | | NULL | | | | é | | É | | é 123 | | ø | | ø 123 | +----------------------+
Alternativ 1:Jämför med [:alnum:]
Vi kan använda PostgreSQL:s !~
operatorn för att jämföra vår kolumn med ett reguljärt uttryck. Vi använder den här operatorn när vi vill ange att värdet inte matchar det reguljära uttrycket.
MySQL:s kapacitet för reguljära uttryck inkluderar stöd för POSIX-teckenklasserna. Därför kan vi använda [:alnum:]
POSIX teckenklass i vårt reguljära uttryck.
SELECT c1 FROM t1
WHERE c1 !~ '[[:alnum:]]';
Resultat:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“
Den tomma strängen är också numerisk, så exemplet returnerade raden som innehåller den tomma strängen.
Vi kan exkludera tomma strängar genom att använda NULLIF()
:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') !~ '[[:alnum:]]';
Resultat:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“
Alternativ 2:Ange ett antal tecken
Ett annat sätt att göra det är att ange ett antal tecken i ditt reguljära uttryck.
Exempel:
SELECT c1 FROM t1
WHERE c1 !~ '[A-Za-z0-9]';
Resultat:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“ é É ø
Och för att ta bort den tomma strängen:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') !~ '[A-Za-z0-9]';
Resultat:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“ é É ø
I det här fallet täckte inte mitt uteslutningsintervall alfanumeriska tecken som é
, É
och ø
, och så utdata är inte en sann representation av icke-alfanumeriska tecken. Som sagt, åtminstone den här metoden ger dig möjlighet att ange exakt de tecken du vill inkludera eller utesluta från resultatet.