Nedan finns två alternativ för att returnera rader som endast innehåller icke-alfanumeriska tecken i PostgreSQL.
Icke-alfanumeriska tecken inkluderar skiljetecken som example@sqldat.com#&()–[{}]:;',?/* 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 |
| example@sqldat.com |
| 1 + 1 |
| () |
| example@sqldat.com#&()–[{}]:;',?/* |
| `~$^+=<>“ |
| $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:
()
example@sqldat.com#&()–[{}]:;',?/*
`~$^+=<>“
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:
()
example@sqldat.com#&()–[{}]:;',?/*
`~$^+=<>“
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:
()
example@sqldat.com#&()–[{}]:;',?/*
`~$^+=<>“
é
É
ø Och för att ta bort den tomma strängen:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') !~ '[A-Za-z0-9]'; Resultat:
()
example@sqldat.com#&()–[{}]:;',?/*
`~$^+=<>“
é
É
ø
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.