sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL-indfangningsgruppe for regulære udtryk i select

Hvis du forsøger at fange det regex-match, der blev resultatet af udtrykket, så substring ville gøre tricket:

select substring ('I have a dog', 'd[aeiou]g')

Ville returnere enhver kamp, ​​i dette tilfælde "hund."

Jeg tror, ​​at det manglende led i det, du prøvede ovenfor, var, at du skal sætte det udtryk, du vil fange, i parentes. regexp_matches ville fungere i dette tilfælde (havde du inkluderet parenteser omkring det udtryk, du ønskede at fange), men ville returnere en række tekst med hvert match. Hvis det er ét match, substring er lidt praktisk.

Så cirkuler tilbage til dit eksempel, hvis du prøver at returnere stuff hvis og kun hvis det er i begyndelsen af ​​en kolonne:

select substring (column, '^(stuff)')

eller

select (regexp_matches (column, '^(stuff)'))[1]


  1. Udløs valg af underordnede poster, multiplicering af deres værdier og opdatering af overordnet post

  2. Oprettelse af multidimensional indlejret array fra MySQL-resultat med duplikerede værdier (PHP)

  3. Bogen "PostgreSQL 9.0 High Performance" er ude

  4. MySQL/PDO::quote(), Sætter enkelte anførselstegn omkring heltal