Nedenfor er to muligheder for at returnere rækker, der kun indeholder ikke-alfanumeriske tegn i PostgreSQL.
Ikke-alfanumeriske tegn inkluderer tegnsætningstegn såsom example@sqldat.com#&()–[{}]:;',?/* og symboler som `~$^+=<>“ , såvel som mellemrumstegn som mellemrum eller tabulatortegn.
Eksempel på data
Vi bruger følgende data til vores eksempler:
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 |
+----------------------+ Mulighed 1:Sammenlign med [:alnum:]
Vi kan bruge PostgreSQL's !~ operator for at sammenligne vores kolonne med et regulært udtryk. Vi bruger denne operator, når vi ønsker at angive, at værdien ikke matcher det regulære udtryk.
MySQLs regulære udtryksevne inkluderer understøttelse af POSIX-tegnklasserne. Derfor kan vi bruge [:alnum:] POSIX-tegnklasse i vores regulære udtryk.
SELECT c1 FROM t1
WHERE c1 !~ '[[:alnum:]]'; Resultat:
()
example@sqldat.com#&()–[{}]:;',?/*
`~$^+=<>“
Den tomme streng er også numerisk, og det eksempel returnerede derfor den række, der indeholder den tomme streng.
Vi kan ekskludere tomme strenge ved at bruge NULLIF() :
SELECT c1 FROM t1
WHERE NULLIF(c1, '') !~ '[[:alnum:]]'; Resultat:
()
example@sqldat.com#&()–[{}]:;',?/*
`~$^+=<>“
Mulighed 2:Angiv en række af tegn
En anden måde at gøre det på er at angive en række tegn i dit regulære udtryk.
Eksempel:
SELECT c1 FROM t1
WHERE c1 !~ '[A-Za-z0-9]'; Resultat:
()
example@sqldat.com#&()–[{}]:;',?/*
`~$^+=<>“
é
É
ø Og for at fjerne den tomme streng:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') !~ '[A-Za-z0-9]'; Resultat:
()
example@sqldat.com#&()–[{}]:;',?/*
`~$^+=<>“
é
É
ø
I dette tilfælde dækkede mit ekskluderingsområde ikke alfanumeriske tegn som é , É og ø , og outputtet er derfor ikke en sand repræsentation af ikke-alfanumeriske tegn. Når det er sagt, giver denne metode dig i det mindste mulighed for at angive de nøjagtige tegn, du vil inkludere eller udelukke fra resultatet.